根目录和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;
}
- 如:
-