详解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实现反向代理
Sep 20 Servers
Nginx同一个域名配置多个项目的实现方法
Mar 31 Servers
Nginx解决前端访问资源跨域问题的方法详解
Mar 31 Servers
nginx结合openssl实现https的方法
Jul 25 Servers
Windows下用Nginx配置https服务器及反向代理的问题
Sep 25 Servers
Nginx防盗链与服务优化配置的全过程
Jan 18 Servers
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
Apr 07 Servers
KVM基础命令详解
Apr 30 Servers
Nginx的gzip相关介绍
May 11 Servers
nginx 添加http_stub_status_module模块
May 25 Servers
nginx静态资源的服务器配置方法
Jul 07 Servers
windows server2016安装oracle 11g的图文教程
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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
js跳转页面方法总结
2014/01/29 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
js实现分割上传大文件
2016/03/09 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
jquery实现购物车基本功能
2019/10/25 jQuery
python 获取网页编码方式实现代码
2017/03/11 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
Python代码太长换行的实现
2019/07/05 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
python绘制彩虹图
2019/12/16 Python
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
自主招生自荐信范文
2013/12/04 职场文书
2014年财政所工作总结
2014/11/22 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
pycharm代码删除恢复的方法
2021/06/26 Python