Nginx反向代理.NET Core项目出现502 Bad Gateway错误求助
解决Nginx反向代理.NET Core应用出现502 Bad Gateway的问题
我本地可访问运行在5001端口的.NET Core应用,但通过公网IP结合反向代理配置访问时出现502 Bad Gateway错误。已为域名unix.example.com配置SSL,仅开放443端口入站流量。以下是我的Nginx location配置代码及错误日志,请问遗漏了哪些配置?
Nginx配置代码
location / { root /var/www/html/masterwebsite/publish/; proxy_http_version 1.1; proxy_set_header "Connection" ""; proxy_pass http://127.0.0.1:5001; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_temp_file_write_size 64k; proxy_connect_timeout 10080s; proxy_send_timeout 10080; proxy_read_timeout 10080; proxy_buffer_size 64k; proxy_buffers 16 32k; proxy_busy_buffers_size 64k; proxy_redirect off; proxy_request_buffering off; } server_name _;
错误日志内容
2023/04/09 00:39:14 [error] 36703#36703: *1 upstream prematurely closed connection while reading response header from upstream, client: 86.18.44.49, server: unix.example.com, request: "GET /masterwebsite/ HTTP/1.1", upstream: "http://127.0.0.1:5001/masterwebsite/"
问题排查与修复建议
- 修正server_name匹配:当前
server_name _;是通配符配置,无法精准匹配你的域名unix.example.com,必须改为server_name unix.example.com;,确保Nginx将请求路由到正确的server块。 - 移除多余的root指令:location块中的
root /var/www/html/masterwebsite/publish/;属于静态文件服务配置,而这里是反向代理到.NET Core应用,这条指令会干扰请求转发逻辑,直接删除即可。 - 添加HTTPS转发头:由于你使用了SSL(443端口),需要告知.NET Core应用请求来自HTTPS,添加配置:
proxy_set_header X-Forwarded-Proto $scheme;,否则应用可能生成HTTP链接导致请求异常。 - 检查.NET Core监听地址:确认应用监听的是
http://0.0.0.0:5001而非仅http://localhost:5001,部分环境下localhost和127.0.0.1存在访问差异,监听0.0.0.0才能确保本地所有IP可访问。 - 验证上游连通性:在服务器终端执行
curl http://127.0.0.1:5001/masterwebsite/,如果返回异常,说明问题出在.NET Core应用本身,比如路由配置错误或服务未正常启动。
内容的提问来源于stack exchange,提问作者RON12345
相关产品推荐
相关产品推荐

