所谓端口代理本质还是把请求转发到其他指定server上,所以是基于反向代理(proxy_pass / fastcgi_pass两种协议
)来实现,目的更易于做负载均衡和维护管理。
1 不做端口代理
一般是在conf文件里定义远程服务的ip或域名,比如
service => [
'moc' => '123,1,2,3:9988',
]
调用是用client自动获取moc的配置,然后发送请求即可,没什么问题,也是常用的,但是有一个不好的地方,假如moc服务迁移,那么就需要修改当前服务的配置。
2 端口代理
端口代理本质是监听本机服务的一个端口,然后转发该端口的请求到目标服务上。
第一步:配置服务配置
service => [
'moc' => '127,0。0.1:9988',
]
第二步:配置nginx
upstream backend {
server a:9696 weight 2;
server b:9696 weight 1;
server c:9696 backup;
}
server {
listen 9898;
access_log logs/moc-access.log;
error_log logs/moc-error.log;
proxy_pass backend;
proxy_timeout 30m;
}
这样迁移服务时,就只需调整nginx配置即可,无需修改服务的配置文件信息。而且,这样更好的实现了负载均衡。