场景:
主服务和微服务分别部署在两台主机上,主服务的页面中直接请求到了微服务,然而,有些客户只允许为客户机开通生产服务器一个端口(例如8088)的情况下该方案不可行。
解决方案:通过Nginx代理请求去完成。主要的配置如下
配置说明:
server {
#拦截的端口地址 此端口地址需对外开发
listen 7094;
#主服务的地址 如域名或IP地址
server_name localhost;
#拦截对主服务的请求
location /myfams {
#代理地址 主服务对应映射路径
proxy_pass http://127.0.0.1:8088/myfams;
}
#拦截微服务接口地址
location /rest/datacenter {
#代理地址 数据中心微服务映射地址
proxy_pass http://127.0.0.1:8094/rest/datacenter;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
注意:主服务中调用微服务的端口需要修改为listen端口
原理大致如下:Nginx会监听listen端口,此接口对外开放,主服务调用微服务通过此端口由Nignx去代理proxy_pass其它主机上的微服务请求。