nginx tcp协议配置

以下是Nginx实现TCP协议代理的配置教程及配置文件样例:

一、配置前提条件
Nginx版本要求‌:需使用1.9.13及以上版本(支持TCP代理功能)‌
模块支持‌:编译时必须包含--with-stream模块(通过nginx -V命令检查输出是否包含该参数)‌
二、配置文件结构

Nginx的TCP代理配置需在主配置文件nginx.conf的stream块中完成,且stream块需独立于http块之外‌。

结构示例‌:

nginx
Copy Code
# 全局配置(影响所有模块)
user nginx;
worker_processes auto;

# stream块配置(TCP/UDP代理专用)
stream {
    # 引入子配置文件(推荐模块化管理)
    include /etc/nginx/tcp.d/*.conf;
}

三、TCP代理配置样例
场景:将TCP 3306端口的请求转发到后端MySQL服务器
创建子配置文件‌
在/etc/nginx/tcp.d/目录下新建proxy_mysql.conf文件:
nginx
Copy Code
stream {
    upstream mysql_backend {
        # 后端服务器列表(支持权重、健康检查)
        server 192.168.1.100:3306 weight=5 max_fails=3 fail_timeout=30s;
        server 192.168.1.101:3306;
    }

    server {
        # 监听本地3306端口
        listen 3306;
        # 开启TCP代理
        proxy_pass mysql_backend;
        # 连接超时时间
        proxy_timeout 60s;
        # 启用TCP长连接
        proxy_connect_timeout 1s;
    }
}

参数说明‌:
upstream:定义后端服务器集群,支持负载均衡策略(如轮询、加权轮询)。
proxy_pass:指定后端服务器组名称。
max_fails:允许失败次数,配合fail_timeout实现自动剔除故障节点。
proxy_timeout:代理连接的超时时间。
四、操作流程
检查配置文件语法‌
bash
Copy Code
nginx -t

重新加载配置‌
bash
Copy Code
systemctl reload nginx

验证端口监听‌
bash
Copy Code
netstat -tulnp | grep nginx

五、高级配置(可选)
多协议混合配置‌
nginx
Copy Code
stream {
    # TCP协议代理
    server {
        listen 3306;
        proxy_pass backend_mysql;
    }

    # UDP协议代理
    server {
        listen 53 udp;
        proxy_pass dns_servers;
    }
}

日志记录‌
在stream块中添加:
nginx
Copy Code
log_format tcp_log '$remote_addr [$time_local] $protocol $status';
access_log /var/log/nginx/tcp_access.log tcp_log;

六、常见问题
启动报错server directive not allowed here‌
原因:stream块被错误嵌套在http块中,需确保两者为同级配置‌。
连接超时‌
检查后端服务状态,或调整proxy_connect_timeout参数‌。

以上配置示例基于Nginx 1.18+环境验证,实际部署时需根据业务需求调整参数‌。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值