插件窝 干货文章 Nginx的socket转发端口如何配置

Nginx的socket转发端口如何配置

Nginx 配置 stream 端口 403    来源:    2025-04-22

Nginx Socket转发端口配置指南

Nginx可以通过stream模块实现TCP/UDP socket的端口转发功能。以下是详细的配置方法:

1. 确保Nginx包含stream模块

首先确认你的Nginx安装了stream模块:

nginx -V 2>&1 | grep -o with-stream

如果没有输出,需要重新编译Nginx添加--with-stream参数。

2. 基础TCP端口转发配置

在nginx.conf主配置文件中添加stream块:

stream {
    server {
        listen 12345;  # 监听端口
        proxy_pass backend_server:5432;  # 转发到后端服务器
    }
}

3. UDP端口转发配置

stream {
    server {
        listen 53 udp;  # 监听UDP端口
        proxy_pass dns_server:53;
        proxy_responses 1;  # 期望的响应数
    }
}

4. 负载均衡配置

stream {
    upstream backend {
        server backend1.example.com:12345;
        server backend2.example.com:12345;
    }

    server {
        listen 12345;
        proxy_pass backend;
    }
}

5. SSL/TLS终止配置

stream {
    server {
        listen 443 ssl;
        proxy_pass backend_server:443;

        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;
        ssl_protocols TLSv1.2 TLSv1.3;
    }
}

6. 高级配置选项

stream {
    server {
        listen 12345;
        proxy_pass backend:5432;

        # 连接超时设置
        proxy_connect_timeout 5s;
        proxy_timeout 30s;

        # 缓冲区设置
        proxy_buffer_size 16k;

        # 日志记录
        access_log /var/log/nginx/tcp-access.log;
        error_log /var/log/nginx/tcp-error.log;
    }
}

7. 配置完成后

检查配置并重启Nginx:

nginx -t  # 测试配置
systemctl restart nginx  # 重启服务

注意事项

  1. stream模块通常需要放在主配置文件中,不能放在虚拟主机配置中
  2. 确保防火墙开放了相关端口
  3. 对于高并发场景,可能需要调整系统级别的文件描述符限制

希望以上配置能帮助你实现Nginx的socket端口转发功能。如需更详细的配置,可以参考Nginx官方文档中的stream模块部分。