我可以访问在本地端口 5001 上运行的 dotnet 核心应用程序。但是,当通过具有反向代理配置的公共 IP 访问时,我得到了错误的网关。
我的域应用了 SSL,只有通过端口 443 的入站流量。 服务器名称 unix.example.com
我错过了什么?
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 [错误] 36703#36703:*1 上游过早 从上游读取响应标头时关闭连接,客户端: 86.18.44.49,服务器:unix.example.com,请求:“GET /masterwebsite/ HTTP/1.1”,上游:“http://127.0.0.1:5001/masterwebsite/”,
我设法自己弄明白了。
线索在nginx日志中。
我希望代理指向的 URL 是
http://127.0.0.1:5001
但是它在 nginx 日志中显示了这个
http://127.0.0.1:5001/masterwebsite/
额外的位
/masterwebsite/
是问题所在。
它是由于 URL 末尾缺少尾部斜杠而发生的
proxy_pass http://127.0.0.1:5001/;