LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

nginx 代理tcp端口

admin
2025年6月30日 18:9 本文热度 50

应用场景,我们由于网络限制,只有前置机或者固定服务器可以与外部链接, 要使用 Nginx 代理 TCP 端口(如数据库、SSH、游戏服务器等非 HTTP 服务),需使用 Nginx Stream 模块。该模块专门处理 TCP/UDP 流量,配置与 HTTP 代理有所不同。以下是详细配置步骤:

一、确认 Nginx 是否支持 Stream 模块

  1. 检查编译参数
    nginx -V 2>&1 | grep stream
    • 若输出包含 --with-stream,说明已启用 Stream 模块。
    • 若未启用,需重新编译 Nginx 并添加 --with-stream 参数(或使用包含该模块的发行版,如 Ubuntu 的 nginx-extras)。

二、配置 TCP 代理(示例:代理 MySQL 端口 3306)

1. 创建 Stream 配置文件

在 Nginx 配置目录(通常为 /etc/nginx)下创建 stream.conf

# /etc/nginx/stream.conf
stream {
    # 定义日志格式(可选)
    log_format tcp '$remote_addr [$time_local] '
                   '$protocol $status $bytes_sent $bytes_received '
                   '$session_time "$upstream_addr" '
                   '"$upstream_bytes_sent" "$upstream_bytes_received"';

    access_log /var/log/nginx/tcp_access.log tcp;
    error_log /var/log/nginx/tcp_error.log;

    # TCP 代理配置(监听 63306 端口,转发到后端 MySQL 3306)
    server {
        listen 63306;  # 代理服务器监听端口
        proxy_pass 192.168.1.100:3306;  # 后端真实服务器地址:端口

        # 可选参数
        proxy_connect_timeout 10s;       # 连接超时时间
        proxy_timeout 300s;             # 会话超时时间
        proxy_buffer_size 16k;          # 缓冲区大小
    }
}

2. 在主配置文件中引入 Stream 配置

编辑 /etc/nginx/nginx.conf,在文件末尾添加:

# /etc/nginx/nginx.conf
include /etc/nginx/stream.conf;

三、多端口代理配置示例

若需同时代理多个 TCP 服务(如 MySQL 和 Redis),可在 stream.conf 中添加多个 server 块:

stream {
    # MySQL 代理
    server {
        listen 63306;
        proxy_pass 192.168.1.100:3306;
    }

    # Redis 代理
    server {
        listen 6379;
        proxy_pass 192.168.1.101:6379;
    }

    # SSH 代理
    server {
        listen 2222;
        proxy_pass 192.168.1.102:22;
    }
}

四、常用 Stream 模块参数说明

参数
作用
示例值
listen
代理服务器监听的端口
63306
0.0.0.0:6379
proxy_pass
后端真实服务器地址和端口
192.168.1.100:3306
proxy_connect_timeout
连接后端服务器的超时时间
10s
proxy_timeout
会话超时时间(无数据传输时关闭)
300s
proxy_buffer_size
缓冲区大小
8k
16k
ssl_preread
启用 SSL/TLS 预读取(用于 SNI 路由)
on

五、验证配置并重启 Nginx

  1. 检查配置语法

    nginx -t
  2. 重启 Nginx

    systemctl restart nginx
  3. 验证代理是否生效

    # 检查端口监听
    netstat -tulpn | grep nginx

    # 使用 telnet 测试连接(以 MySQL 为例)
    telnet localhost 63306

六、注意事项

  1. 防火墙设置

    • 确保服务器防火墙开放代理端口(如 63306)。
    • 示例(以 firewalld 为例):
      firewall-cmd --add-port=63306/tcp --permanent
      firewall-cmd --reload
  2. 性能考虑

    • 高并发场景下,建议调整 worker_processes 和 worker_connections 参数。
    • 开启 sendfile 提升传输效率:
      stream {
          sendfile on;
          # 其他配置...
      }
  3. 监控与日志

    • 通过 tcp_access.log 和 tcp_error.log 监控代理流量。
    • 使用 nginx -s reload 热加载配置,避免中断服务。

通过以上配置,Nginx 可高效代理各类 TCP 服务,实现负载均衡、端口映射、安全隔离等功能。


阅读原文:原文链接


该文章在 2025/7/1 10:58:40 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved