Nginx:当`index`和`try_files`在同一个块中时,为什么要处理`try_files`,而不是`index`指令?

时间:2016-03-23 10:31:32

标签: nginx

nginx.conf如下:

http {
    server {
        listen  8080;
        server_name example.com;             
        root /tmp/test/example;
        location / {
            index index.html;
            try_files $uri /test.html;
        }

    }
}

当我访问example.com:8080时,它会访问/tmp/test/example/test.html,而不是index.html

1 个答案:

答案 0 :(得分:11)

try_files指令为documented here

它专门记录了两个文件元素:$uri$uri/。第一个测试是否存在普通文件,第二个测试是否存在目录。

由于处理指向包含与其中一个指令参数匹配的文件的目录的URI而调用index指令。

try_files $uri /test.html;的情况下,未测试目录的存在,因此采取默认操作。

对于try_files $uri $uri/ /test.html;,目录的存在已经过测试,因此会采取索引操作。