是什么原因导致 try_files 失败?

是什么原因导致 try_files 失败?

这里怎么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;
        }
}

相关内容