考虑这样一个场景,我们部署了若干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的原创文章,请关注公众号"汪子熙":