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/服務。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM