您当前的位置: 首页 >  http

少林码僧

暂无认证

  • 3浏览

    0关注

    317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Nginx配置覆盖导致HTTP长连接失效

少林码僧 发布时间:2021-08-26 10:32:32 ,浏览量:3

问题背景

当在nginx的location中增加以下配置

 proxy_set_header X-Real-IP $remote_addr
 proxy_set_header X-Inter-Real-IP $remote_addr

通过curl请求上游接口发现hearder头中Connection: [close]

因在不同的模块中(server,location)都配置了proxy_set_header,所以在 server 模块中设置的 header 被覆盖,导致 Nginx 与上游服务器的长连接变为了短连接,在高并发场景下上游服务出现大量 time_wait,tcp链接数疯长,资源得不到释放,导致上游服务器端口被耗尽。

正确的保长连接的配置
http {
    upstream backend {
        server my-server:8080;
        keepalive 128; # 每个工作进程的缓存上游服务器的最大空闲保持连接数
    }
    
    server {
        listen 80;
        server_name my.gateway.com;
        
        proxy_http_version 1.1;                   # 设置http版本为1.1
        proxy_set_header Connection "";           # 设置Connection为长连接,清理来自客户端的Connection**

        location / {
          proxy_pass http://backend;
        }
    }
}

加粗样式核心在于 proxy_http_vers

关注
打赏
1661398670
查看更多评论
立即登录/注册

微信扫码登录

0.0386s