Fedora 37下Nginx location指令失效,代理请求返回404求助
Nginx location指令失效导致404问题排查
核心问题分析及解决步骤:
服务器名称不匹配
你的server块配置了server_name myapi.com;,但实际访问的是localhost/api/,Nginx会优先匹配与请求域名一致的server块,若没有匹配到localhost的配置,会使用默认服务器规则,导致你的/api/location未生效。
解决:修改server_name为localhost,或添加localhost到列表中:server_name myapi.com localhost;验证后端路径可用性
确认后端服务http://127.0.0.1:3000是否存在/api/0/路径。直接用curl测试:curl http://127.0.0.1:3000/api/0/如果返回404,说明问题出在后端服务,而非Nginx配置。
重载Nginx配置
修改配置后必须重新加载才能生效:sudo nginx -s reload若重载失败,先检查配置语法:
sudo nginx -t查看错误日志定位细节
查看Nginx错误日志获取具体404原因:sudo tail -f /var/log/nginx/error.log访问
localhost/api/后,日志会明确显示是Nginx未匹配到location,还是后端返回的404。
修改后的示例server块:
server { listen 80; listen [::]:80; server_name myapi.com localhost; # root /usr/share/nginx/html; include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location / { proxy_pass http://127.0.0.1:3000; } location /api/ { proxy_pass http://127.0.0.1:3000/api/0/; } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
内容的提问来源于stack exchange,提问作者Tanuj Sharma
相关产品推荐
相关产品推荐

