登 录
注 册
< 系统运维
Linux
计算机系统
系统工具
常用特殊命令
常用shell脚本
Nginx基本概念
Nginx多端口代理
Nginx负载均衡配置
Nginx负载均衡策略
Nginx动静分离
Nginx高可用
热门推荐>>>
中台架构
中台建设与架构
Hadoop
源码分析-NN启动(三)
HBase
HBased对接Hive
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
Hive
Hive调优参数大全
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Linux
>>
Nginx多端口代理
Nginx多端口代理
2021-12-25 14:43:42 星期六 阅读:810
![](/static/images/article_images/1693147195.369674.webp) ####实现效果 实现浏览器输入不同的URL,跳转到不同的服务器端口,比如: 1、浏览器输入http://192.168.1.6/beijing 跳转到192.168.1.6:8080 2、浏览器输入http://192.168.1.6/shanghai 跳转到192.168.1.6:9090 也就是说,浏览器感知不到有多台Tomcat服务器存在,具体可参考下图理解 ![](/static/images/article_images/1640414341.6911328.jpeg) 因为是跳转到两个不同的端口,所以需要启动两台Tomcat服务器,这里使用Docker启动两个容器,并指定不同的端口。 ``` # 获取镜像 docker pull tomcat:8.0.35 # 根据镜像创建第一个容器并启动,指定端口为8080 docker run --name tomcat8080 -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat:8.0.35 # 根据镜像创建第二个容器并启动,指定端口为9090 docker run --name tomcat9090 -p 9090:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat:8.0.35 ``` 保证浏览器输入IP:8080及9090能够看到Tomcat的启动成功页面 http://192.168.1.6:8080 http://192.168.1.6:9090 注意,如果访问不通,查看防火墙是否关闭,没关闭,则开放8080和9090端口即可。 同时为了前端浏览器访问不同路径时,能够辨别出实际上是访问哪个端口,这里分别进入两台容器对两台Tomcat服务器里面的页面进行改动。 ``` docker exec -it tomcat8080 /bin/bash cd webapps/ mkdir beijing # 创建一个简单的HTML页面,用来标识当前服务器端口 cd beijing echo "<h1>This is beijing, And current server post is: 8080<h1>" > a.html ``` 同理,对9090端口的服务器也进行修改 ``` docker exec -it tomcat9090 /bin/bash cd webapps/ mkdir shanghai # 创建一个简单的HTML页面,用来标识当前服务器端口 cd shanghai echo "<h1>This is shanghai, And current server post is: 9090<h1>" > a.html ``` #### 配置Nginx请求转发(反向代理) 修改Nginx配置文件 ``` cd /usr/local/nginx/conf vim nginx.conf ``` 修改HTTP块下面的server子块 ``` # 配置server_name的值为Tomcat服务所在机器IP listen 80; server_name 192.168.1.6; ``` 修改location 块的转发路径和端口 ``` # URL中包含beijing的都转发到8080端口 location ~ /beijing/ { proxy_pass http://192.168.1.6:8080; } # URL中包含shanghai的都转发到9090端口 location ~ /shanghai/ { proxy_pass http://192.168.1.6:9090; } ``` 重启Nginx服务并查看效果 ``` cd /usr/local/nginx sbin/nginx -s stop # 启动 sbin/nginx ``` 浏览器输入以下URL进行测试 www.libins.cn/beijing/a.html www.libins.cn/shanghai/a.html ![](/static/images/article_images/1640414608.9699075.jpeg)