使用nginx代理時,可使用一個監聽端口,然后再結合端口后的路徑對多個server進行代理,如下圖所示:
此時訪問:
http://test.com/portal
就相當於訪問:http://127.0.0.1:8080/portal
訪問:
就相當於訪問: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/服務。