飘在云端

东西南北,海角天涯

· 前端 · · 202次浏览

nginx代替firewalld实现端口转发(tcp/udp)

这个有个优点,nginx效率更高,还能不安装firewalld/iptables之类的东东,还有我的内核比较旧,跟firewalld有些致命冲突
nginx需要编译--with-stream
简单配置如下:监听本机65500-65507的tcp ipv4/ipv6端口,转发至本机的65535端口,并且65500-65505启用长连接,关闭延时转发。

注意 stream{} 需要在 http{}这一段的前面,并且与http是同级的。

stream {
           server {
           tcp_nodelay on; 
           so_keepalive=on;
            listen *:65500 so_keepalive=30m::10;
            listen *:65501 so_keepalive=30m::10;
            listen *:65502 so_keepalive=30m::10;
            listen *:65503 so_keepalive=30m::10;
            listen *:65504 so_keepalive=30m::10;
            listen *:65505 so_keepalive=30m::10;
            listen *:65506;
            listen *:65507;
            #proxy_responses 1;  没转发udp端口就注释掉这行,有转发UDP端口,就不注释
            proxy_connect_timeout 3s;
            proxy_timeout 3s;
            proxy_pass 127.0.0.1:65535;    
       }

http{
  省略若干
      }

默认使用tcp转发,如果需要转发udp,改成listen *:65500 udp,可以同时监听tcp和udp。

评论 (0条)