nginx header-connection

ref: https://datatracker.ietf.org/doc/html/rfc7230#section-6

The “Connection” header field allows the sender to indicate desired
control options for the current connection. In order to avoid
confusing downstream recipients, a proxy or gateway MUST remove or
replace any received connection options before forwarding the
message.

nginx转发,设置 Connection: close

img.png

proxy_set_header Connection "";

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.

而且 其中一个配置:

1
2
3
4
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的协议

所以解决 方法很简单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 "";
...
}
}

参考文章

评论