考慮這樣一個場景,我們部署了若干web應用在一台雲服務器上,這些web應用監聽在不同的端口號上。為了方便用戶訪問,我們希望這些web應用最終暴露給外界訪問的網址是諸如"域名/webapp1", "域名/webapp2", "域名/webapp3"這種,而不是"域名:8001/webapp1", "域名:8002/webapp2", "域名:8003/webapp3"這種。
換句話說,我們希望若干個web應用,暴露給用戶的是同一個端口號。最理想的情況就是HTTP協議用默認的80端口,而HTTPS為默認的443端口。
利用NGINX可以實現這個端口映射需求。
假設我有一個web應用,監聽在端口3001上:
現在我希望將這個3001端口隱藏起來。
只需要在nginx服務器的conf目錄下,編輯nginx.conf這個文件,添加下面這個配置:
location /env/ {
proxy_pass http://localhost:3001/env;
}
而我的nginx默認監聽的端口是8099:
這樣我繼續使用nginx的8099端口,也能通過上述配置,訪問到原本監聽在3001端口的應用了。
重復這個配置,就能實現監聽在不同端口的眾多web應用,能通過nginx暴露的同一端口訪問。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":