Nginx
对tcp
协议的代理是通过ngx_stream_core_module
这个模块实现的,此模块要1.9.0
版本后才有,而且默认是不启用的。安装时应使用配置参数--with-stream
启用。
./configure --prefix=/usr/local/nginx --with-stream
make && make install
然后通过./nginx -V
查看有没有--with-stream
参数。
1、tcp负载均衡配置
修改nginx/conf/nginx.conf
文件,新增stream {...}
配置块,和http{...}
配置块是同级关系。
# tcp接入
stream {
upstream socketServer{
server 172.16.122.104:21221;
server 172.16.122.105:21221;
server 172.16.122.106:21221;
}
# tcp全局日志配置
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
server {
listen 21220;
# 日志路径配置
access_log /usr/local/nginx/logs/tcp_access.log proxy;
error_log /usr/local/nginx/logs/tcp_error.log;
proxy_connect_timeout 5s; # 后台服务器连接超时时间
proxy_timeout 30s; # 转发后台服务超时时间
proxy_pass socketServer;
}
}
Nginx
本地监听21220
端口,然后转发到upstream
中配置的后台服务器地址,默认是轮询策略。
参考链接
- Nginx支持Socket转发过程详解
- nginx 1.12 stream 日志设置