现部署两个应用服务:http://192.168.81.200:8081/serverA 和192.168.81.200:8082/serverB,现需要将这两个服务通过一个端口81代理出来供外部访问,配置如下:
upstream sA {
server 192.168.81.200:8081;
}
upstream sB {
server 192.168.81.200:8082;
}
server {
listen 81;
server_name master;
# 反向代理serverA
location /asReverse/ {
#代理地址一定要以/结尾
proxy_pass http://sA/serverA/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
}
#反向代理serverB
location /bsReverse/ {
#代理地址一定要以/结尾
proxy_pass http://sB/serverB/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
}
}
server {
listen 82;
server_name master;
# 正向代理serverA服务
locaton /asForward/{
proxy_pass http://192.168.81.200:8081/serverA/;
proxy_set_header host $host;
#获取客户端真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#sub_filte替换: 解决代理webservice的时候,location协议、端口被转换的问题
#sub_filter 'location="http:ip:port' 'location="http:ip:newport';
#sub_filter_once off;
#sub_filter_types text/xml
}
#解决代理过程中无法访问js css等静态资源
location / {
proxy_pass http://192.168.81.200:8082;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#配置静态资源服务,通过localhost/file/可以访问file目录下的静态资源
location /file {
root html;
}
}
外部访问serverA和serverB的地址:
http://192.168.81.200:81/as/serverA(或者http://192.168.81.200:82/asForward/)
http://192.168.81.200:81/bs/serverB