Nginx可以通过stream模块实现TCP/UDP socket的端口转发功能。以下是详细的配置方法:
首先确认你的Nginx安装了stream模块:
nginx -V 2>&1 | grep -o with-stream
如果没有输出,需要重新编译Nginx添加--with-stream
参数。
在nginx.conf主配置文件中添加stream块:
stream {
server {
listen 12345; # 监听端口
proxy_pass backend_server:5432; # 转发到后端服务器
}
}
stream {
server {
listen 53 udp; # 监听UDP端口
proxy_pass dns_server:53;
proxy_responses 1; # 期望的响应数
}
}
stream {
upstream backend {
server backend1.example.com:12345;
server backend2.example.com:12345;
}
server {
listen 12345;
proxy_pass backend;
}
}
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;
}
}
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;
}
}
检查配置并重启Nginx:
nginx -t # 测试配置
systemctl restart nginx # 重启服务
希望以上配置能帮助你实现Nginx的socket端口转发功能。如需更详细的配置,可以参考Nginx官方文档中的stream模块部分。