详解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
Filebeat 采集 Nginx 日志的方法
Mar 31 Servers
详解nginx进程锁的实现
Jun 14 Servers
Rhit高效可视化Nginx日志查看工具
Nov 01 Servers
nginx中proxy_pass各种用法详解
Nov 07 Servers
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
Apr 07 Servers
nginx配置之并发频次限制
Apr 18 Servers
nginx容器方式反向代理实战
Apr 18 Servers
nginx 配置缓存
May 11 Servers
nginx 添加http_stub_status_module模块
May 25 Servers
Nginx 配置 HTTPS的详细过程
May 30 Servers
Apache Kafka 分区重分配的实现原理解析
Jul 15 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
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
限制复选框的最大可选数
2006/07/01 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
Python 3 判断2个字典相同
2019/08/06 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
python实现统计代码行数的小工具
2019/09/19 Python
python根据文本生成词云图代码实例
2019/11/15 Python
python判断变量是否为列表的方法
2020/09/17 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
RetroStage德国:复古服装
2019/02/03 全球购物
建筑施工员岗位职责
2013/11/26 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
《角的度量》教学反思
2016/02/18 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
element多个表单校验的实现
2021/05/27 Javascript
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android