403 场景
使用如下的try_files配置,想要实现的效果是输入localhost:8000,直接跳转到localhost:8000/xx/index.html
server {
listen 8000;
location / {
root project;
index index.html index.htm;
try_files $uri $uri/ /xx/index.html;
}
}
但浏览器输入localhost:8000,返回403 Forbidden
nginx报错信息:directory index of "/usr/share/nginx/html/" is forbidden

问题原因
因为 nginx 会尝试索引目录,并被自身阻止。
try_files uri/ 表示从根目录尝试 uri 指向的文件,如果该文件不存在,则尝试使用目录(因此是 /)。当 nginx 访问一个目录时,它会尝试对其进行索引并将其中的文件列表返回给浏览器 / 客户端,但是默认情况下目录索引是禁用的,因此它会返回错误 “Nginx 403 错误:[文件夹] 的目录索引” 是禁止的”。
解决办法
方法1:去掉"uri /xx/index.html;
方法2:在root目录下添加一个index.html
500 场景
try_files 无限重定向
nginx报错信息:rewrite or internal redirection cycle while internally redirecting to "/manager///////////
问题原因
每个重写规则都有一个明确的结束条件,并且不会导致重定向循环
解决办法
try_files 添加一个默认路径 /xx/index.html即可
网友评论