问题起因:
利用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参数,短时间内如果没有收到响应通讯连接就断了。加上这两个参数后就使用长连接,保证服务端在请求处理完成后不主动关闭连接。