"upstream prematurely closed connection" 错误表示Nginx与上游服务器(如应用服务器、PHP-FPM、Node.js等)的连接被上游服务器意外关闭。这通常发生在:
在Nginx配置文件中增加或修改以下参数:
http {
proxy_connect_timeout 60s; # 与上游服务器建立连接的超时时间
proxy_send_timeout 60s; # 发送请求到上游服务器的超时时间
proxy_read_timeout 60s; # 从上游服务器读取响应的超时时间
# 对于FastCGI (如PHP-FPM)
fastcgi_connect_timeout 60s;
fastcgi_send_timeout 60s;
fastcgi_read_timeout 60s;
# 对于uWSGI
uwsgi_connect_timeout 60s;
uwsgi_send_timeout 60s;
uwsgi_read_timeout 60s;
}
确保上游服务器的超时设置比Nginx长:
request_terminate_timeout
和request_slowlog_timeout
值proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_http_version 1.1;
proxy_set_header Connection "";
tcpdump
或Wireshark分析网络流量tail -f /var/log/nginx/error.log
strace
或类似工具监控上游服务器进程通过以上调整和诊断,应该能够解决或至少准确定位"upstream prematurely closed connection"问题的根本原因。