Nginx自定义Location路径失效:多目录站点配置404故障排查
问题排查与修复方案
核心问题分析
你当前的Nginx配置存在两处关键错误,导致/projects路径访问404:
- 路径配置错误:你的实际目录是
/var/www/projects,但配置里写的是root /var/www/html/projects,多了不必要的html层级,Nginx找不到对应文件。 - 指令使用错误:
root指令会把location的前缀(比如/projects)拼接到指定路径后面,比如访问/projects/index.php时,Nginx会去查找/var/www/projects/projects/index.php,这显然不存在。这种场景应该用alias指令直接替换路径前缀。
另外,你的WordPress配置也存在同样的root使用错误,后续访问/blog也会出问题,需要一起修正。同时,因为你访问的是.php文件,必须配置PHP解析规则,否则即使路径正确,Nginx也无法处理PHP请求。
修正后的完整Server配置
http { include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; server { listen 80; server_name _; # 处理PHP请求,转发到php-fpm location ~ \.php$ { fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据你的PHP版本调整sock路径 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 根路径映射 location / { root /var/www; index index.html index.php; } # WordPress路径修正 location /blog { alias /var/www/wordpress; index index.php; # 确保WordPress的静态资源也能正确访问 try_files $uri $uri/ /blog/index.php?$args; } # Projects路径修正 location /projects { alias /var/www/projects; index index.php; } } }
验证步骤
- 检查Nginx配置语法是否正确:
nginx -t
- 重启Nginx生效:
systemctl restart nginx
- 再次访问
http://{ip-address}/projects/index.php验证是否正常。
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

