Ubuntu 22.04下Nginx添加新location后静态页面无法访问求助
解决Nginx中/newpage/静态页面无法访问的问题
核心问题:root指令的路径拼接逻辑错误
你当前配置的root /var/www/newpage/html配合location /newpage/时,Nginx会尝试查找的文件路径是/var/www/newpage/html/newpage/index.html,但你的实际文件存放在/var/www/newpage/html/index.html,路径不匹配导致404错误。
修复方案
有两种可行的调整方式:
方式1:使用alias指令替代root
alias会直接将请求路径映射到指定目录,不会拼接location的前缀,更适合这种场景:
location /newpage/ { alias /var/www/newpage/html/; index index.html; #auth_basic "Restricted Content"; #auth_basic_user_file /etc/nginx/.htpasswd; }
方式2:调整root路径匹配目录结构
要么把文件移动到/var/www/newpage/html/newpage/index.html,要么修改root路径为/var/www/newpage,让Nginx的查找路径和实际文件位置对应:
location /newpage/ { root /var/www/newpage; index index.html; #auth_basic "Restricted Content"; #auth_basic_user_file /etc/nginx/.htpasswd; }
额外检查项
- 权限验证:确保Nginx进程(通常是
www-data用户)拥有文件和目录的读取权限:sudo chown -R www-data:www-data /var/www/newpage sudo chmod -R 755 /var/www/newpage - 配置测试与重载:修改后先验证配置合法性,再重启Nginx生效:
sudo nginx -t sudo systemctl reload nginx - 错误日志排查:如果问题仍存在,查看Nginx错误日志定位细节:
sudo tail -f /var/log/nginx/error.log
内容的提问来源于stack exchange,提问作者Bruce James
相关产品推荐
相关产品推荐

