百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

nginx-端口转发(nginx端口转发到其他ip)

nanshan 2024-10-18 07:26 61 浏览 0 评论

背景

场景1

给客户开发微信公众号后台程序,大家都知道微信公众号必须要求80/443端口,OK,如果客户要求云服务器托管,那就GG了。因为同时监听80端口的服务端只能有一个,每个客户都得给他配一台服务器,哈哈,简直不要太烧钱。

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

场景2

作为一个程序员,不同时开发N个项目简直体现不了自己的价值。

比如同时开发了如下几个springboot项目:(不要问我为何如此优秀,因为下面项目都是虚构)

  1. Rocket 火箭配套软件
  2. Missle 导弹配套软件
  3. Plane 飞机配套软件
  4. …等等

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

 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:8012
127.0.0.1:8022

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

round4 开发两个项目

开发

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

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

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

重启两个服务器,然后使用如下地址访问:

127.0.0.1:8012/Rocket/index.html
127.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_rocket
			proxy_pass http://sever_rocket;
		}
 #匹配Missle开头请求
		location ^~/Missle {
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 #sever_missle
			proxy_pass http://sever_missle;
		}
 }

round6 大功告成

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

厉害了。

后话

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

location ^~/Rocket

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

nginx的配置相当复杂,但是who care,程序员只要够用就行了。

作者:慕课熊猫

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

来源:慕课网

相关推荐

服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下

Raid5数据恢复算法原理:分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值...

服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复

服务器数据恢复环境&故障:由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windowsserver操作系统,没有配置ups。因为服务器异常断电重启后,rai...

服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例

服务器数据恢复环境:P740+AIX+Sybase+V7000存储,存储阵列柜上共12块SAS机械硬盘(其中一块为热备盘)。服务器故障:存储阵列柜中有磁盘出现故障,工作人员发现后更换磁盘,新更换的磁盘...

「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复

服务器数据恢复环境:DellPowerVault系列磁盘柜;用RAID卡创建的一组RAID5;分配一个LUN。服务器故障:在Linux系统层面对LUN进行分区,划分sdc1和sdc2两个分区。将sd...

服务器数据恢复-ESXi虚拟机被误删的数据恢复案例

服务器数据恢复环境:一台服务器安装的ESXi虚拟化系统,该虚拟化系统连接了多个LUN,其中一个LUN上运行了数台虚拟机,虚拟机安装WindowsServer操作系统。服务器故障&分析:管理员因误操作...

「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例

服务器数据恢复环境:HPStorageWorks某型号存储;虚拟化平台为vmwareexsi;10块磁盘组成raid5(有1块热备盘)。服务器故障:raid5阵列中两块硬盘指示灯变黄掉线,无法读取...

服务器数据恢复—基于oracle数据库的SAP数据恢复案例

服务器存储数据恢复环境:某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。服务器存储故障&分析:该RAID5阵...

「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例

服务器虚拟化数据恢复环境:Dell某型号服务器;数块STAT硬盘通过raid卡组建的RAID10;XenServer服务器虚拟化系统;故障虚拟机操作系统:WindowsServer,部署Web服务...

服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例

服务器数据恢复环境:某品牌服务器中有一组由4块SAS磁盘做的RAID5磁盘阵列。该服务器操作系统为windowsserver,运行了一个单节点Oracle,数据存储为文件系统,无归档。该oracle...

服务器数据恢复—服务器磁盘阵列常见故障表现&amp;解决方案

RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对...

「服务器数据恢复」IBM某型号服务器RAID5磁盘阵列数据恢复案例

服务器数据恢复环境:IBM某型号服务器;5块SAS硬盘组成RAID5磁盘阵列;存储划分为1个LUN和3个分区:第一个分区存放windowsserver系统,第二个分区存放SQLServer数据库,...

服务器数据恢复—Zfs文件系统下误删除文件如何恢复数据?

服务器故障:一台zfs文件系统服务器,管理员误操作删除服务器上的数据。服务器数据恢复过程:1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做...

服务器数据恢复—Linux+raid5服务器数据恢复案例

服务器数据恢复环境:某品牌linux操作系统服务器,服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器中存放的数据有数据库、办公文档、代码文件等。服务器故障&检测:服务器在运行过程中突然瘫痪,...

服务器数据恢复—Sql Server数据库数据恢复案例

服务器数据恢复环境:一台安装windowsserver操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...

服务器数据恢复—阿里云ECS网站服务器数据恢复案例

云服务器数据恢复环境:阿里云ECS网站服务器,linux操作系统+mysql数据库。云服务器故障:在执行数据库版本更新测试时,在生产库误执行了本来应该在测试库执行的sql脚本,导致生产库部分表被tru...

取消回复欢迎 发表评论: