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


注销
1k 声望1.6k 粉丝

invalid