HTTPS下Nginx访问/hey路径无法返回index.html报404问题求助
问题根因
你遇到的404错误由Nginx root 指令的路径拼接逻辑导致:
在location /hey块中使用root /usr/share/nginx/html时,Nginx处理/hey路径的请求时,会将location匹配的路径段拼接到root路径后,最终查找的实际文件路径为 /usr/share/nginx/html/hey/index.html,而非你预期的 /usr/share/nginx/html/index.html。如果/usr/share/nginx/html下不存在hey子目录及对应文件,就会返回404。
解决方案
二选一即可:
方案1:使用alias指令替换root
适合需要将/hey路径直接映射到现有/usr/share/nginx/html目录的场景,修改对应location块配置如下:
location /hey { alias /usr/share/nginx/html; index index.html index2.html; }
修改后:
- 访问
/hey会返回/usr/share/nginx/html/index.html - 访问
/hey/index2.html会返回/usr/share/nginx/html/index2.html
方案2:保持root配置不变,调整目录结构
在/usr/share/nginx/html目录下创建hey子目录,将需要访问的index.html、index2.html移动到该子目录中即可。
配置生效验证
修改配置后依次执行以下命令:
- 执行
nginx -t检查配置语法是否合法,返回test is successful再进行下一步 - 执行
nginx -s reload重载Nginx配置使修改生效
补充排查点:如果重载配置后依旧返回错误,检查Nginx运行用户对
/usr/share/nginx/html目录及内部的html文件是否有可读权限。
内容的提问来源于stack exchange,提问作者avnav99
相关产品推荐
相关产品推荐

