开发过程中经常遇到这样的需求需要基于某网关设备做负载均衡
内网中某台服务器提供外网访问服务
80端口流量区分
TCP端口转发
需求1、2归结起来说就是对TCP流量转发,nginx 原生支持tcp流量转发。
比如我A服务器(192.168.1.100)是网关设备,有公网访问能力;B(192.168.1.101)、C(192.168.1.102)服务器是内网服务器;想通过A服务器将请求转发到B、C服务。具体配置如下:stream{
server{
listen 0.0.0.0:10190 udp;
proxy_responses 0;
proxy_timeout 2s;
proxy_pass proxy_b;
}
server{
listen 0.0.0.0:10191 udp;
proxy_responses 0;
proxy_timeout 2s;
proxy_pass proxy_c;
}
upstream proxy_b{
server 192.168.1.101:10290;
}
upstream proxy_c{
server 192.168.1.102:10290;
}
}
该配置需要再ngxin顶级模块中配置。通过上面的配置,就能将A服务器的10190转发到B服务器的10290,A服务器的10191转发到C服务器的10290。
HTTP流量转发
上面介绍的是纯TCP转发,如果想做HTTP分流,比如将不同请求