在开发过程中经常遇到这种需求,需要基于网关设备进行负载平衡
内联网中的某台服务器提供外联网访问服务
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{
服务器{
listen 0.0.0.0:10190 udp;
proxy_responses 0;
proxy_timeout 2s;
proxy_pass proxy_b;
}
服务器{
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{
服务器192.168.1.102336010290;
}
}
必须在Xin的顶级模块中重新配置此配置。 通过上述配置,可以将a服务器10190传输到b服务器10290,将a服务器10191传输到c服务器10290。
HTTP流量转发
虽然上面是纯TCP传输,但如果要进行HTTP卸载,例如,要将所有不同的请求传输到a上的80个端口,然后区分流量,则只能在nginx上的HTTP模块中进行配置。 具体构成如下。 http
{
.
upstream socket_proxy {
hash $ remote _ addr一致性;
serverdomain-b.com :8020 weight=5max _ fails=3fail _ time out=30s;
}
服务器{
listen 80
服务器_ name domain-a.com;
位置/{
proxy_pass http://socket_proxy;
}
}
.
}
上述经验对开发很有帮助。