关于nginx 流量转发 tcp保持的问题

morris

问题描述

关于nginx 流量转发 tcp保持的问题

为此你搜索到了哪些方案及不适用的原因

我的想法是 nginx转发流量到 workerman 的时候、 可以让nginx 与 workerman 保持长连接、以减少tcp链接的开销;

nginx转发配置:
截图

这里 设置了http版本为1.1 并且手动加了header 头 keep-alive;

在workerman onmessage方法 打印 bufferdata
截图

通过打印看到 header头 keep-alive 已经设置成功:
截图

但是我用lsof 查看端口监听的时候 却没有发现有 保持的链接
截图

如果我直接浏览器访问 http://localhost:8787
在通过lsof 命令来查看的话 是可以看到保持的 established 的链接
截图

是nginx 流量转发本身就不支持保持tcp链接吗?
还是我配置哪里没设置对呢

183 2 0
2个回答

morris

找到问题了。

  • 暂无评论
morris

怎么不能删除提问呢

  • = - = 2022-12-02

    避免的就是这种提问完,然后还有人解答的,把提问删了的操作(虽然你没有说是什么原因导致的问题)。

  • morris 2022-12-02

    还是配置没对;

    要按照文档中这种来;
    upstream webman {
    server 127.0.0.1:8787;
    keepalive 10240;
    }

    server {
    server_name 站点域名;
    listen 80;
    access_log off;
    root /your/webman/public;

    location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    if (!-f $request_filename){
    proxy_pass http://webman;
    }
    }
    }

  • morris 2022-12-02

    必须设置一个 upstream 在 upstream 这里面设置 keepalive

🔝