项目的图层服务nginx代理,我是这么配置的
location /yx_g/ {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_pass http://hzvmap.oicp.io:52259;
}
访问之后,nginx报错 502 Bad Gateway nginx
这是为何呢?
查看nginx报错日志:
upstream prematurely closed connection while reading response header from upstream
翻译成人话是:
从上游读取响应头时,上游提前关闭连接。
这是由于
tomcat默认采用的协议为 HTTP/1.1,而nginx默认用的是 HTTP/1.0。而HTTP/1.0是不支持keepalive,这样就不能保持活跃连接了。
因此需要配置proxy_http_version 1.1,proxy_set_header Connection默认close:通知后端服务器主动关闭连接,这样会导致任何一个客户端的请求都在后端服务器上产生了一个TIME-WAIT状态的连接
所以,nginx配置应该修改为
location /yx/ {
# 增加下面两行配置
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_pass http://hzvmap.oicp.io:52259/;
}
就OK了