详解nginx.conf 中 root 目录设置问题


Posted in Servers onApril 01, 2021

在配置 nginx.conf 总会遇到一些问题,下面列举一些常见的问题并说明如何解决

1、相对路径的问题

例如配置文件中 location 设置

location ~ .php${
 root html
 }

location 中root所指向的html是一个相对路径,相对的是这个配置文件的路径,假设此配置文件的位置是/etc/nginx/conf.d,那么这个html的绝对路径就是/etc/nginx/conf.d/html。因此为避免出现不必要的麻烦,在配置root路径的过程中最好用绝对路径。

2、路径的继承问题

2.1 第一种情况

假如server 中声明:

root /usr/share;

且 location 中声明:

location /{
 root /usr/html/www
 }

此时会优先使用 location 中的路径

2.2 第二种情况

假如 location 中未对root路径进行声明:

location /app {

}

则默认使用 location 外的 root 声明的路径

3、首页的设置问题

假如我们在声明server 中声明:

index index.html index.php

那么我们此时请求 / 就会在内部重定向到 url/index.php 或者 url/index.html
然后再由相关的location 进行匹配 之后再进行解析

nginx.conf文件的详解

官网对各个模块参数配置的解释说明网址: Nginx中文文档

##代码块中的events、http、server、location、upstream等都是块配置项##
##块配置项可以嵌套。内层块直接继承外层快,例如:server块里的任意配置都是基于http块里的已有配置的##

##Nginx worker进程运行的用户及用户组 
#语法:user username[groupname]  默认:user nobody nobody
#user用于设置master进程启动后,fork出的worker进程运行在那个用户和用户组下。当按照"user username;"设置时,用户组名与用户名相同。
#若用户在configure命令执行时,使用了参数--user=usergroup 和 --group=groupname,此时nginx.conf将使用参数中指定的用户和用户组。
#user nobody;

##Nginx worker进程个数:其数量直接影响性能。
#每个worker进程都是单线程的进程,他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用,那么,有多少CPU内核就应该配置多少个进程,反之,有可能出现阻塞式调用,那么,需要配置稍多一些的worker进程。
worker_processes 1;

##ssl硬件加速。
#用户可以用OpneSSL提供的命令来查看是否有ssl硬件加速设备:openssl engine -t
#ssl_engine device;

##守护进程(daemon)。是脱离终端在后台允许的进程。它脱离终端是为了避免进程执行过程中的信息在任何终端上显示。这样一来,进程也不会被任何终端所产生的信息所打断。##
##关闭守护进程的模式,之所以提供这种模式,是为了放便跟踪调试nginx,毕竟用gdb调试进程时最繁琐的就是如何继续跟进fork出的子进程了。##
##如果用off关闭了master_proccess方式,就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求
#daemon off;  #查看是否以守护进程的方式运行Nginx 默认是on 
#master_process off; #是否以master/worker方式工作 默认是on

##error日志的设置#
#语法: error_log /path/file level;
#默认: error_log / log/error.log error;
#当path/file 的值为 /dev/null时,这样就不会输出任何日志了,这也是关闭error日志的唯一手段;
#leve的取值范围是debug、info、notice、warn、error、crit、alert、emerg从左至右级别依次增大。
#当level的级别为error时,error、crit、alert、emerg级别的日志就都会输出。大于等于该级别会输出,小于该级别的不会输出。
#如果设定的日志级别是debug,则会输出所有的日志,这一数据量会很大,需要预先确保/path/file所在的磁盘有足够的磁盘空间。级别设定到debug,必须在configure时加入 --with-debug配置项。
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

##pid文件(master进程ID的pid文件存放路径)的路径
#pid    logs/nginx.pid;


events {
 #仅对指定的客户端输出debug级别的日志: 语法:debug_connection[IP|CIDR]
 #这个设置项实际上属于事件类配置,因此必须放在events{……}中才会生效。它的值可以是IP地址或者是CIRD地址。
 #debug_connection 10.224.66.14; #或是debug_connection 10.224.57.0/24
 #这样,仅仅以上IP地址的请求才会输出debug级别的日志,其他请求仍然沿用error_log中配置的日志级别。
 #注意:在使用debug_connection前,需确保在执行configure时已经加入了--with-debug参数,否则不会生效。
 worker_connections 1024;
}

##核心转储(coredump):在Linux系统中,当进程发生错误或收到信号而终止时,系统会将进程执行时的内存内容(核心映像)写入一个文件(core文件),以作为调试只用,这就是所谓的核心转储(coredump).

http {
##嵌入其他配置文件 语法:include /path/file
#参数既可以是绝对路径也可以是相对路径(相对于Nginx的配置目录,即nginx.conf所在的目录)
  include    mime.types;
  default_type application/octet-stream;

  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  #         '$status $body_bytes_sent "$http_referer" '
  #         '"$http_user_agent" "$http_x_forwarded_for"';

  #access_log logs/access.log main;

  sendfile    on;
  #tcp_nopush   on;

  #keepalive_timeout 0;
  keepalive_timeout 65;

  #gzip on;

  server {
##listen监听的端口
#语法:listen address:port [ default(deprecated in 0.8.21) | default_server | [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ]
#default_server: 如果没有设置这个参数,那么将会以在nginx.conf中找到的第一个server块作为默认server块
 listen    8080;

#主机名称:其后可以跟多个主机名称,开始处理一个HTTP请求时,nginx会取出header头中的Host,与每个server中的server_name进行匹配,以此决定到底由那一个server来处理这个请求。有可能一个Host与多个server块中的server_name都匹配,这时会根据匹配优先级来选择实际处理的server块。server_name与Host的匹配优先级见文末。
 server_name localhost;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    #location / {
    #  root  html;
    #  index index.html index.htm;
    #}

##location 语法: location [=|~|~*|^~] /uri/ { ... }
# location的使用实例见文末。
#注意:location时有顺序的,当一个请求有可能匹配多个location时,实际上这个请求会被第一个location处理。
 location / {
 proxy_pass http://192.168.1.60;
    }

    #error_page 404       /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
      root  html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #  proxy_pass  http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #  root      html;
    #  fastcgi_pass  127.0.0.1:9000;
    #  fastcgi_index index.php;
    #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    #  include    fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #  deny all;
    #}
  }



  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #  listen    8000;
  #  listen    somename:8080;
  #  server_name somename alias another.alias;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}


  # HTTPS server
  #
  #server {
  #  listen    443 ssl;
  #  server_name localhost;

  #  ssl_certificate   cert.pem;
  #  ssl_certificate_key cert.key;

  #  ssl_session_cache  shared:SSL:1m;
  #  ssl_session_timeout 5m;

  #  ssl_ciphers HIGH:!aNULL:!MD5;
  #  ssl_prefer_server_ciphers on;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}

}

到此这篇关于详解nginx.conf 中 root 目录设置问题的文章就介绍到这了,更多相关nginx.conf root 目录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
nginx实现发布静态资源的方法
Mar 31 Servers
Nginx域名转发https访问的实现
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
详解Nginx启动失败的几种错误处理
Apr 01 Servers
Nginx+Tomcat负载均衡集群的实现示例
Oct 24 Servers
总结高并发下Nginx性能如何优化
Nov 01 Servers
图文详解nginx日志切割的实现
Jan 18 Servers
Nginx限流和黑名单配置
May 20 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
服务器SVN搭建图文安装过程
Jun 21 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
Tomcat安装使用及部署Web项目的3种方法汇总
Aug 14 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
扩展多台相同的Web服务器
Apr 01 #Servers
Nginx安装完成没有生成sbin目录的解决方法
nginx location优先级的深入讲解
Mar 31 #Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 #Servers
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 #Servers
Nginx域名转发使用场景代码实例
Mar 31 #Servers
You might like
国内咖啡文化
2021/03/03 咖啡文化
php微信支付接口开发程序
2016/08/02 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
js 学习笔记(三)
2009/12/29 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
python encode和decode的妙用
2009/09/02 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
python计算两个地址之间的距离方法
2018/06/09 Python
基于Python的PIL库学习详解
2019/05/10 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python面试题之列表声明实例分析
2019/07/08 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
培训主管岗位职责
2014/02/01 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书