问题起因:
利用nginx做请求转发,记录请求和响应的参数并输出到日志,发现有些参数没有打印。查询nginx的默认错误日志/logs/error.log发现抱错信息:
2021/01/07 16:22:11 [error] 19128#0: 72948 upstream prematurely closed connection while reading response header from upstream, client: ..., server: localhost, request: “POST /main/decisionengine HTTP/1.1”, upstream: "http://...:80/main/decisionengine", host: "...*:80".
解决方案:
在nginx的配置文件location里加上如下配置:
proxy_http_version 1.1;
proxy_set_header Connection "";

原因分析:
跟通讯的长短链接有关,nginx默认有keepalive参数,短时间内如果没有收到响应通讯连接就断了。加上这两个参数后就使用长连接,保证服务端在请求处理完成后不主动关闭连接。
本文探讨了如何通过在Nginx配置中加入proxy_http_version和proxy_set_headerConnection来解决请求转发时参数丢失的问题,重点在于理解长连接与短连接的区别,并提供了实际配置案例。
4404

被折叠的 条评论
为什么被折叠?



