Nginx一个端口代理多个server的注意事项

使用nginx代理时,可使用一个监听端口,然后再结合端口后的路径对多个server进行代理,如下图所示:

 

此时访问:

http://test.com/portal

就相当于访问:http://127.0.0.1:8080/portal

访问:

http://test.com/demo

就相当于访问http://127.0.0.1:8081/

但是此时需要注意,前端发送请求回后端,请求链接可能都是根据地址栏中的地址+端口进行拼接的,如果不这么做就会出现前端跨域的问题,那就要做跨域处理。所以此时不仅仅要代理前端的访问页面,同时也要注意代理请求,否则就有可能出现登录页面可以打开,但是却无法登录,或者部分功能出现异常的情况。

配置请求的代理可以分为两种情况,一种是所有的请求是统一接口出去的,一种是请求没有统一接口名称,如果请求是统一接口出去的,如http://127.0.0.1:8080/portal这个服务的所有请求都是统一接口center发出,那么所有请求的URL都是http://IP:PORT/center/........的格式,此时就可以再配置一个路径/center对所有的请求做代理:

location /center {

proxy_pass http://127.0.0.1:8080/center;

root html;

index index.html index.htm;

}

如果请求没有统一接口,如http://127.0.0.1:8081/这个服务,后台的请求并没有统一接口,有时候接口名称是api,有时候又是autoconfig,那么也就是说它的请求URL的格式也有多种:http://IP:PORT/api/........、http://IP:PORT/autoconfig/........等,此时对所有请求接口都做跳转是不太现实的,所以只能对端口进行代理,把监听端口的所有请求都代理到http://127.0.0.1:8081/服务:

location / {

proxy_pass http://127.0.0.1:8081/;

root html;

index index.html index.htm;

}

此时整个nginx.conf的配置如下:

 

 

 此时访问test.com,如果后面路径是/center、/portal、/demo,那么就跳到代理的链接,其他的全部都跳到http://127.0.0.1:8081/服务。

 

 

posted @ 2020-04-17 15:20  何为实施  阅读(18753)  评论(0编辑  收藏  举报