![是什么原因导致 try_files 失败?](https://linux22.com/image/757589/%E6%98%AF%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0%E5%AF%BC%E8%87%B4%20try_files%20%E5%A4%B1%E8%B4%A5%EF%BC%9F.png)
这里怎么try_files
没有加载文件呢?
我有这样的配置:
server {
server_name test;
root /var/www/test_dir;
location / {
index index.html, index.htm;
try_files $uri, $uri/, index.html;
}
}
其中 root 指向文件夹/var/www/test_dir
:
drwxr-xr-x 2 root root 4096 Sep 17 19:52 test_dir
其中包含该文件index.html
:
-rw-r--r-- 1 root root 48 Sep 17 19:52 index.html
我收到 404 错误。为了验证 Nginx 是否使用此配置,我注释掉了上述配置并重新加载。访问导致连接错误。当我取消注释并重新加载 Nginx 时,它再次出现 404 错误。
答案1
逗号不是必需的 - 它们被解释为文字字符包含在您的 try_files 或索引页文件名中。尝试删除 index 和 try_files 指令配置中的所有逗号,然后使用只是空格来分隔参数,而不是逗号。(因此,它会测试 URI/,
是否是对您网站的裸请求,并尝试不存在的文件,
,即使对于您的索引要求查找的任何给定 URI 来说情况并非如此,index.html,
它也不会存在。)
配置应该是这样的,因为在 NGINX 配置文件中传递给各个命令/指令的参数是空格分隔不是以逗号分隔的:
server {
server_name test;
root /var/www/test_dir;
location / {
index index.html index.htm;
try_files $uri $uri/ index.html;
}
}