@多服务代理
需求
最近项目上遇到一个需求,两地的策略只能开单个端口,8081,但是有4个url要通过这个端口代理出去
10.10.10.1:2000/service1/aa/server
10.10.10.1:2000/service1/bb/server
10.10.10.1:3000/service2/aa/server
10.10.10.1:3000/service2/bb/server
配置一
server {
listen 8081;
location /service1/ {
proxy_pass http://10.10.10.1:2000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /service2/ {
proxy_pass http://10.10.10.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
访问方式如下,IP代表nginx的代理地址,地址中第一个service1和service2代表的nginx中location后面的配置名字,注意location后面的名字后面有一个"/"
访问:
http://IP:8081/service1/service1/aa/server;
http://IP:8081/service1/service1/bb/server;
http://IP:8081/service2/service2/aa/server;
http://IP:8081/service2/service2/bb/server;
配置二
server {
listen 8081;
server_name service1.server;
location / {
proxy_pass http://10.10.10.1:2000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 8081;
server_name service2.server;
location / {
proxy_pass http://10.10.10.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
这种的话,不常用,因为要改hosts文件,proxy_pass不需要写4个,写到端口就可以了。
还有就是server_name一般是需要配置/etc/hosts文件,在客户端开通访问策略后,也是需要添加host。
访问:
http://service1.server:8081/service1/aa/server;
http://service1.server:8081/service1/bb/server;
http://service2.server:8081/service2/aa/server;
http://service2.server:8081/service2/bb/server;