技术解析

NGINX 长连接 TCP 转发
0
2021-05-20 21:55:46
idczone
项目需要 NGINX 国外服务器长连接 TCP 转发,有没有大牛,有偿
tcp 转发?一般不都用 HAProxy 么。

ngx_stream_module

OpenResty 1.13.6.1 正式版刚刚发布,基于最新的 Nginx 主线版 1.13.6,包含了新的 ngx_stream_lua 模块,可以在 OpenResty 里面用 Lua 玩 TCP 服务器编程。

https://openresty.org/cn/changelog-1013006.html 最新的 openresty 的可以支持了

listen xxx-tcp
bind *:1234
mode tcp
maxconn 50000
timeout client 600s
default_backend abc_cluster
backend abc_cluster
mode tcp
balance source
timeout server 50s
timeout check 5000
server node1 192.168.0.2:2234 check inter 10000 fall 2 rise 5 weight 1
server node1 192.168.0.3:3234 check inter 10000 fall 2 rise 5 weight 1
source 0.0.0.0 usesrc clientip

stream {
resolver 119.29.29.29 valid=10s;
tcp_nodelay on;
upstream http {
server xxx.com.cn:80;
}
upstream https {
server xxx.com.cn:443;
}
server {
listen 80 so_keepalive=on;
proxy_pass http;
}
server {
listen 443 so_keepalive=on;
proxy_pass https;
}
}

ngx_stream_module 似乎会缓存域名的 ip, 如果 ip 变了没有重新加载配置是不会生效的, 目前在烦恼, 而且可配置项太少了

我的项目就用过。

感觉可以用来开发新一代帆强工具,直接探测是一个 nginx http 服务

如果是 websocket 参考这个 http://nginx.org/en/docs/http/websocket.html

http/1 只能 1:1 代理,http/2 可以多路复用 backend 链接,这是协议限制。

nginx 基于 stream 的 tcp 转发已经比较成熟,大部分一半业务需求都能够搞得定。
楼主有特殊功能需求的话可以联系我

tcp_nodelay on; so_keepalive=on; 主要是加这 2 个参数是吗?谢谢

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服