💥upstream prematurely closed connection while reading response header from upstream
汉译:当从上游读取响应头时,上游提前关闭连接
经确认,此错误一般是开启长链接后,长链接超时关闭时,恰好有数据发生
因此,解决方案有两个:
- nginx 将长链接的超时设置为 0 ,即关闭长链接
keepalive_timeout 0; # 此值默认为0,默认位于nginx主配置
- 关闭 nginx 长链接超时主动关闭的功能
proxy_http_version 1.1; # 支持长链接
proxy_set_header Connection ""; # 此值默认是 close,将其设置为空从而使nginx不会主动关闭长连接;
nginx 添加自定义 header 后,就会覆盖掉相应的默认值
Module ngx_http_proxy_module (nginx.org)
Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host; proxy_set_header Connection close;
Context: http
,server
,location
💥get参数经过 proxy_pass 后,上游后端程序无法获取
location ~* ^/v2/(.*) {
proxy_pass http://127.0.0.1:8083/$1?$args;
proxy_connect_timeout 10s;
proxy_send_timeout 10s;
proxy_read_timeout 10s;
proxy_max_temp_file_size 1024m; # 若设置为0,表示不启用缓存
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffers 256 4k;
proxy_intercept_errors on; #开启错误页支持
}
✨通过 $args 传递。