标签:nginx 端口转发 四层tcp linux tcp负载均衡
在大型项目四层负载有LVS,但在中小型项目或者内部有很多应用需要做TCP四层基于端口转,以前我们采用Socat,后面也尝试使用iptables来做四层的端口转发,同样HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,但由于其配置相对复杂,在实际生产项目中还是以Nginx为主,
Nginx1.9的推出不使用使之支持HTTP2.0,另外一上更加让人兴奋的就是默认支持TCP端口的四层负载均衡能力,话多多说直接看实例代码
server {
listen 127.0.0.1:12345; #监听端口
proxy_pass 192.168.1.22:8080; #转发到后端端口
}看上面栗子,是不是觉得做端口转发配置特别简单
参考地址:http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
server {
...
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
deny all;
}在上面的栗子基础上,增加一访问限制,和HTTP的一模一样也
参考地址:http://nginx.org/en/docs/stream/ngx_stream_access_module.html
worker_processes auto;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
stream {
upstream backend {
server 192.168.1.22:12345;
server 192.168.1.23:12345;
}
server {
listen 12345;
proxy_pass backend;
}
}来一上完整的栗子,这是一上带伏在均衡的栗子哦,看了是不是特别激动,会Http反向代理的,看这代码毫无压力
如需要更加强大的东西可 以参考:
http://nginx.org/en/docs/stream/ngx_stream_core_module.html
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 1m;
proxy_pass example.com:12345;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}如上栗子,不光支持TCP/IP V4,还支持V6哦(不过暂时也用不上),并且还可以对连接的时效做一些限制,比起以前用过的iptables和socat端口转发强大太多了,并且还很容易理解.
上参考路径:http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
upstream backend {
hash $remote_addr consistent;
server backend1.example.com:12345 weight=5;
server backend2.example.com:12345;
server unix:/tmp/backend3;
server backup1.example.com:12345 backup;
server backup2.example.com:12345 backup;
}
server {
listen 12346;
proxy_pass backend;
}等等,还没完,Nginx还有更加强大的就是对我产的转发源也可以进行简单明了的设置,基本沿用了Nginx http反向代理的配置方法主风格,简直太喜欢.
http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html
最后用上Nginx,妈妈再也不用担心复杂架构,各种异构应用使用各种奇葩的七层协议及端口呢!
本文出自 “Linux_运维_自动化” 博客,转载请与作者联系!
nginx1.9基于端口的四层负载均衡实践,基于端口的转的负载均衡
标签:nginx 端口转发 四层tcp linux tcp负载均衡
原文地址:http://artman.blog.51cto.com/3218204/1722093