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 个参数是吗?谢谢