一、检查Stream模块状态
1. 查看Nginx编译参数
nginx -V 2>&1 | grep --color --with-stream
如果输出包含以下任意一种结果,说明已编译Stream模块:
--with-stream
(静态编译)--with-stream=dynamic
(动态模块,需手动加载)
2. 动态模块的特殊处理
若结果显示为--with-stream=dynamic
,则需确保Nginx启动时加载动态库。在Alibaba Linux 3系统中,检查以下文件是否存在自动加载配置:
/usr/share/nginx/modules/mod-stream.conf
若缺少该文件,需手动在nginx.conf
顶部添加:
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
二、安装与加载Stream模块
1. 补充安装模块(若缺失)
yum install -y nginx-mod-stream
2. 定位动态库路径
find / -iname ngx_stream_module.so 2>/dev/null
典型路径:/usr/lib64/nginx/modules/ngx_stream_module.so
三、配置Stream转发
1. 编辑主配置文件
打开nginx.conf
,在events
块同级添加以下内容:
stream {
upstream realmd_backend_server {
server 192.168.83.6:3724;
}
upstream mangos_backend_server {
server 192.168.83.6:8085;
}
server {
listen 3724;
proxy_pass realmd_backend_server;
}
server {
listen 8085;
proxy_pass mangos_backend_server;
}
}
2. 命令注释说明
upstream
:定义后端服务器地址池server
:监听端口并转发至指定upstream
组
四、验证与应用配置
1. 语法检查
nginx -t
成功输出示例:
nginx: configuration file /etc/nginx/nginx.conf test is successful
2. 重启Nginx服务
systemctl restart nginx
五、常见问题排查
模块加载失败
- 检查
load_module
路径是否正确 - 确认动态库权限:
chmod 644 /usr/lib64/nginx/modules/*
- 检查
启动报错
- 查看日志定位问题:
tail -f /var/log/nginx/error.log
- 查看日志定位问题:
防火墙拦截
firewall-cmd --permanent --add-port=3724/tcp firewall-cmd --permanent --add-port=8085/tcp firewall-cmd --reload
六、扩展应用
健康检查
在upstream
中添加主动探测策略:health_check interval=10s timeout=3s;
SSL加密传输
配合stream_ssl_module
实现加密转发:server { listen 443; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; proxy_pass backend_servers; }
附录:配置文件完整参考
user nginx;
worker_processes auto;
# 加载动态模块(必须放在events前)
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
events {
worker_connections 1024;
}
stream {
upstream realmd_backend_server {
server 192.168.83.6:3724;
}
upstream mangos_backend_server {
server 192.168.83.6:8085;
}
server {
listen 3724;
proxy_pass realmd_backend_server;
}
server {
listen 8085;
proxy_pass mangos_backend_server;
}
}
http {
# 其他HTTP配置...
}
通过以上步骤,您已成功实现Nginx的四层流量代理能力,可适配游戏服务器、数据库集群等TCP/UDP场景需求。
评论