需求:前后段分離的項目里面,一套系統有N套api,一套api就是一個獨立的站點,每個端口都需要開通外網,否則前端頁面無法訪問站點。有沒有一種方法,讓服務器只開一個外網端口?
解決思路:
- 規范api路由結構。暫且定義路由結構格式為:域名(IP)+端口+/api/controller/function。端口使用同一個,那么域名(IP)+端口是固定的,在nginx里面可以根據/api/controller來匹配路由
- 接口1: /api/sso/x1 /api/sso/x2 /api/sso/x3
- 接口2:/api/open/x1 /api/open/x2 /api/open/x3
- ..........
2.配置nginx轉發路由
配置解析舉例:
location ~ /api/openmt {
proxy_pass http://localhost:8101;
意思是將http請求中url包含 /api/openm 的全部轉發到 http://localhost:8101
例如:http://xxxx/api/openmt/list1, http://xxxx/api/openmt/list2 都轉發到 http://localhost:8101處理
所有api站點共用一個端口