Nginx笔记(二)

根目录和index文件
  • 通过root指令来声明根目录的路径,root指令可以放到http, server或者location的任一层级里。子层级重新定义的root会覆盖父层级的root。

  • 例子
    server {
    root /www/data;

        location / {
        }
    
        location /images/ {
        }
    
        location ~ \.(mp3|mp4) {
            root /www/media;
        }
    }
    
  • 如果一个请求以斜杠结尾,nginx认为它想访问一个目录然后会去寻找index文件,index指令用来定义index文件的名称,默认是index.html。

  • 如果index文件不存在会报404,但是如果想列出该目录下的文件,则使用audoindex指令。

    • 如:
      location /images/ {
      autoindex on;
      }
  • 可以在index指令后面列出不止一个文件名字,中间用空格分开,nginx按顺序查找,然后返回第一个可访问的。

  • 为了返回index文件,nginx检测文件是否存在然后将文件名字连接到获取的请求的uri上进行内部重定向。

  • 例子

    • 配置:
      location / {
      root /data;
      index index.html index.php;
      }

      location ~ \.php {
          fastcgi_pass localhost:8000;
          ...
      }
      
    • 如果请求的uri是/path/并且/data/path/index.html不存在,但是/path/index.php是存在的,它匹配到了第二个location,达到被代理的服务上。

Trying Serveral Options
  • try_files 指令检测指定的文件或者目录是否存在,如果不存在进行内部跳转或者返回一个指定的状态码。
    • 如:
      server {
      root /www/data;

          location /images/ {
              try_files $uri /images/default.gif;
          }
      }
      
    • 如果uri所请求的文件不存在就会内部重定向到/www/data/images/default.gif

    • 第二个参数也可以是一个指定的状态码。

      • 如:
        location / {
        try_files $uri $uri/ $uri.html =404;
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容