一、预期效果
在外部主机的浏览器上访问相应地址,获得如下效果:
- 访问
http://IP地址:9001/edu
,跳转到http://127.0.0.1:8080
- 访问
http://IP地址:9001/vod
,跳转到http://127.0.0.1:8081
二、准备工作
1.Tomcat部署
首先,把Tomcat压缩包下载到/usr/src
目录下,然后在服务器上安装两个Tomcat,具体操作如下:
cd /usr/src
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.55/bin/apache-tomcat-9.0.55.tar.gz
mkdir tomcat8080
# -C参数的作用是解压到指定目录
tar -xvf apache-tomcat-9.0.55.tar.gz -C ./tomcat8080
mkdir tomcat8081
tar -xvf apache-tomcat-9.0.55.tar.gz -C ./tomcat8081
然后,修改tomcat8081
目录下的Tomcat的配置,操作如下:
# Tomcat配置文件在其conf目录
cd tomcat8081/apache-tomcat-9.0.55/conf
# 修改server.xml
vim server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--修改port为8086-->
<Server port="8006" shutdown="SHUTDOWN">
<!--此处省略其他配置-->
<Service name="Catalina">
<!--修改port为8081,redirectPort为8444-->
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!--此处省略其他配置-->
</Service>
</Server>
2.静态资源
这里需要两个静态页面来简单区分访问的是8080还是8081端口的Tomcat,将它们分别放入两个tomcat的webapps
目录下,代码如下:
tomcat8080
cd /usr/src/tomcat8080/apache-tomcat-9.0.55/webapps
mkdir edu
cd edu
vim a.html
# a.html
<h1>8080</h1>
tomcat8081
cd /usr/src/tomcat8081/apache-tomcat-9.0.55/webapps
mkdir vod
cd vod
vim a.html
# a.html
<h1>8081</h1>
3.开放端口
在上一篇文章中,我们开放了8080端口,而8081
和9001
端口默认还是关闭的,需要设置防火墙规则来开放这两个端口,命令如下:
firewall-cmd --permanent --add-port=8081/tcp
firewall-cmd --permanent --add-port=9001/tcp
firewall-cmd --reload
4.测试
现在尝试在外部主机访问http://IP地址:8080/edu/a.html
和http://IP地址:8081/vod/a.html
,出现类似下图的页面则表示Tomcat配置无误:
三、nginx配置
我们需要编写一个新的server块来监听9001
端口,代码如下:
server {
listen 9001;
server_name 192.168.x.x; # 你的Linux服务器IP地址
# 这里的 ~ 号表示后面的/edu/是正则表达式
# ~ /edu/ 意思是 匹配uri中包含edu(区分大小写)字符的请求
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
配置完成后,启动nginx。
四、验证
在外部主机的浏览器地址栏输入http://服务器IP地址:9001/edu/a.html
,效果如下:
在外部主机的浏览器地址栏输入http://服务器IP地址:9001/vod/a.html
,效果如下:
与预期效果相同,反向代理配置成功。
五、总结
当我们需要使用nginx对多个服务器进行反向代理时,需要在nginx配置文件中编写相应的server和location配置,并且开放对应的端口。