以下是官方原文:
By default, NGINX redefines two header fields in proxied requests, “Host” and “Connection”, and eliminates the header fields whose values are empty strings. “Host” is set to the $proxy_host
variable, and “Connection” is set to close
.
而且 其中一个配置:
Syntax: proxy_http_version 1.0 | 1.1; Default: proxy_http_version 1.0; Context: http, server, location This directive appeared in version 1.1.4.
所以其实 nginx 到后端 例如 tomcat 之间的连接是 http1.0的协议
所以解决 方法很简单:
upstream http_backend { server 127.0.0.1:8080; } server { ... location /http/ { proxy_pass http://http_backend; proxy_http_version 1.1; proxy_set_header Connection ""; ... } }