给客户开拓微信"大众号后台程序,大家都知道微信"大众号必须哀求80/443端口,OK,如果客户哀求云做事器托管,那就GG了。
由于同时监听80端口的做事端只能有一个,每个客户都得给他配一台做事器,哈哈,切实其实不要太烧钱。

要知道节约是一种美德,必须得用nginx办理之。

场景2

php端口转发nginx端口转发 Java

作为一个程序员,不同时开拓N个项目标确表示不了自己的代价。

比如同时开拓了如下几个springboot项目:(不要问我为何如此精良,由于下面项目都是虚构)

Rocket 火箭配套软件Missle 导弹配套软件Plane 飞机配套软件…等等

为了同时可以调试开拓,得给他们配上不同端口,那就变成了:

1. 127.0.0.1:8001/Rocket 火箭配套软件 2. 127.0.0.1:8002/Missle 导弹配套软件 3. 127.0.0.1:8003/Plane 飞机配套软件 4. ....等等

你可以想想,会常常忘却哪个端口是哪个项目,而且程序员都有强制症啊,万一哪天8002项目成功投产不须要开拓了,我是该当换个项目顶到8002端口呢,还是把8003之后的端口号依次减1重新配置呢。
光是思考这个问题,有洁癖的程序员就用了半个下午…茶不思饭不想,小小码农凄凉凄凉

办理方案

用了nginx就很大略了,统一通过80端口对外供应做事,根据路径自动转发到对应端口的项目上,完事。

小伙伴看到之后都惊呆了,不是一样平常社员。

光说不练是假把式

直接给出配置文件这种办法,没有什么意义,由于我从网上找的很多都是缺点的,真是不足意思。
必须得详细实现下。

如何实现,很大略,搞2个项目放在两个端口上,然后修正nginx配置文件,末了实现从80端口进来自动根据路径转发到对应项目端口。

如何将两个项目放到两个端口,我这边常用两种,开拓阶段便是两个springboot项目配置到不同启动端口,投产阶段便是做事器上两个tomcat配置不同端口。

OK,毕竟有一部分童鞋不用springboot,咱们采取第二种办法。

开练

round1 搞两个tomcat

这个不说了,我弄了两个tomcat,如图:

round2 修正配置文件conf/server.xml

将监听端口分别改为8001、8002如下,把稳为了避免冲突,tomcat1下端口改为801x,tomcat2下端口改为802x。

如下配置,tomcat1在8012端供词给做事,tomcat2在8022端供词给做事。

<!-- tomcat1配置 --><Server port=\"大众8011\"大众 shutdown=\"大众SHUTDOWN\"大众><Connector port=\"大众8012\"大众 protocol=\"大众HTTP/1.1\"大众 connectionTimeout=\"大众20000\"大众 redirectPort=\"大众8013\"大众 /> <Connector port=\"大众8014\公众 protocol=\"大众AJP/1.3\公众 redirectPort=\"大众8015\"大众 /><!-- tomcat2配置 --><Server port=\"大众8021\"大众 shutdown=\"大众SHUTDOWN\"大众><Connector port=\"大众8022\"大众 protocol=\"大众HTTP/1.1\"大众 connectionTimeout=\"大众20000\"大众 redirectPort=\公众8023\公众 /><Connector port=\"大众8024\"大众 protocol=\公众AJP/1.3\公众 redirectPort=\公众8025\"大众 />

round3 验证两个tomcat启动成功

双击bin/startup.bat分别启动两个tomcat,如图:

打开浏览器分别输入地址,均可显示tomcat欢迎页

127.0.0.1:8012127.0.0.1:8022

如图汤姆猫真是越来越妖娆了

round4 开拓两个项目

开拓

项目1 Rocket文件夹,里面包含index.html文件,内容为

项目2 Missle文件夹,里面包含index.html文件,内容为

将两个项目分别放到tomcat1、tomcat2 的webapps目录下。

重启两个做事器,然后利用如下地址访问:

127.0.0.1:8012/Rocket/index.html127.0.0.1:8022/Missle/index.html

效果如下:

round5 修正nginx配置文件

此时可以修正nginx配置文件,通过监听80端口,然后根据路径再将要求转发到不同端口

详细便是将Rocket要求转发到8012端口,将Missle要求转到8022端口,如下:

#gzip on; upstream sever_rocket{server 127.0.0.1:8012;}upstream sever_missle{server 127.0.0.1:8022;} server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } #匹配Rocket开头要求 location ^~/Rocket{ proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #转发到sever_rocketproxy_pass http://sever_rocket;} #匹配Missle开头要求location ^~/Missle { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #sever_missleproxy_pass http://sever_missle;} }

round6 大功告成

如图,一个端口进来,自动转发到相应端口,安全、康健、条理、环保。

厉害了。

后话

关键是nginx的配置文件,例如:

location ^~/Rocket

location表示匹配要求, ^~表示nginx按要求字符串匹配度最高的来匹配。

nginx的配置相称繁芜,但是who care,程序员只要够用就行了。

作者:慕课熊猫

链接:https://www.imooc.com/article/270230

来源:慕课网