一直以来,nginx并不支持TCP协议,一些基于TCP的业务必须依靠别的高可用负载软件来实现。但在nginx 1.9.0以后,意识到了此问题,终于得到了重大的重写。
2015-04-28 nginx更新说明
nginx-1.9.0 mainline version has been released, with the stream module for generic TCP proxying and load balancing.
nginx-1.9.0主线版本已经发布,增加了具有一般的TCP代理和负载均衡的stream模块。
说明:ngx_stream_core_module
模块在nginx-1.9.0以后才会拥有,但在安装时并不会将此安装。需要在./configure
时通过--with-stream
参数来激活这个模块。
下面来分享一个官方提供的stream简单的demo
worker_processes auto;
error_log /var/log/nginx/error.log info;
stream {
upstream backend {
hash $remote_addr consistent;
server backend1.example.com:12345 weight=5;
server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass backend;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
}