Skip to content

Nginx 进行 TCP 和 UDP 端口转发

shell
http {
    server {
        # 此处省略 http 模块配置
    }
}
stream {
    #将 TCP 9001 端口转发到 192.168.188.146 的 3306 端口
    server {
        listen 9001;
        proxy_connect_timeout 10s;
        proxy_timeout 20s;
        proxy_pass 192.168.188.146:3306;
    }

    #将 udp 53 端口转发到 192.168.188.146 的 53 端口
    server {
        listen 53 udp reuseport;
        proxy_timeout 20s;
        proxy_pass 192.168.188.146:53;
    }

    # ipv4 转发到 ipv6
    server {
        listen 9135;
        proxy_connect_timeout 10s;
        proxy_timeout 20s;
        proxy_pass [2607:fcd0:107:3cc::1]:9135;
    }
}

修改后:使用 nginx -s reload 重载 nginx 使其生效,同时注意防火墙/安全组放行对应的端口。

  • listen:后面填写源端口(也就是当前服务器端口),默认协议为TCP,可以指定为UDP协议
  • proxy_connect_timeout:连接超时时间
  • proxy_timeout:超时时间
  • proxy_pass:填写转发目标的IP及端口号

注意:nginx可以将IPV4的数据包转发到IPV6,IPV6的IP需要使用[]括起来。