目录
一、Reverse proxy实例(1)
实现效果:在我们打开浏览器,输入一个网站www.xixi.com(192.168.73.128:80)时,会跳转到Linux系统的Tomcat主页面(192.168.73.128:8080)中。相关原理如下:
1.1 准备环境
链接:https://pan.baidu.com/s/1W4tv8vYHeQNu3mbceNPguA
提取码:5hqp
(1)首先需要我们在Linux中安装Tomcat,并启动服务,确保正常情况下能够访问到Tomcat的主页面。下好Tomcat的压缩包后,导入Linux主机中。
[root@localhost src]# tar -xvf apache-tomcat-7.0.70.tar.gz //解压
[root@localhost src]# cd apache-tomcat-7.0.70/bin/
[root@localhost bin]# ./startup.sh //启动Tomcat
Using CATALINA_BASE: /usr/src/apache-tomcat-7.0.70
Using CATALINA_HOME: /usr/src/apache-tomcat-7.0.70
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-7.0.70/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/src/apache-tomcat-7.0.70/bin/bootstrap.jar:/usr/src/apache-tomcat-7.0.70/bin/tomcat-juli.jar
Tomcat started.
(2)这是我们并不能访问到Tomcat的主页。因为Linux防火墙默认开启,我们需要将8080端口加入防火墙中去;然后我们在浏览器上输入我们Linux主机的IP地址即可看到我们布置的Tomcat服务器。如下图所示;另外我们使用Nginx实现Reverse proxy,而他默认监听的端口为80,所以80号端口也要加入防火墙,
[root@localhost bin]# firewall-cmd --add-port=8080/tcp --permanent
[root@localhost bin]# firewall-cmd --reload
success
1.2 实现Reverse proxy
(1)这里提前要安装好Nginx环境这里就不做过多叙述了,我们直接开始编辑配置文件,首先进入Windows中的hosts文件中添加域名对应关系,相关路径如图所示;
(2)接下来编辑Nginx的主配置文件,这里大家注意一下配置文件的位置,/usr/local/nginx/conf/nginx.conf ,修改的是这个里面的配置文件不是其他的,这里需要注意一下。
server全局模块修改server_name:
server_name 192.168.73.128; //修改server_name
在location模块增加一行
proxy_pass http://127.0.0.1:8080; //添加一行
(3)配置完主配置文件后在重新加载Nginx服务。
[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -s reload
(4)我们知道Tomcat的默认端口为8080,这里我们直接使用默认IP地址(80端口)访问,可以访问到Tomcat主页面;这里也可以使用www.xixi.com访问,因为我们已经在hosts文件中加了域名对应关系,所以它也可以转到Tomcat主页面。
二、Reverse proxy实例(2)
实现效果:使用 nginx Reverse proxy ,根据访问的路径跳转到不同端口的服务中,nginx 监听端口为 9001,
- 访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8080
- 访问 http://127.0.0.1:9001/vod/ 直接跳转到 127.0.0.1:8081
2.1 准备工作
(1)要实现这个效果,首先得准备两个Tomcat,一个8080端口,一个8081端口。这里就把上面的实验中的Tomcat关闭掉了(在apache-tomcat-7.0.70/bin/目录下执行 ./shutdown.sh命令)
[root@localhost src]# mkdir 8081 //先创建两个文件夹
[root@localhost src]# mkdir 8080
[root@localhost src]# cd 8081
[root@localhost 8081]# ls
apache-tomcat-7.0.70.tar.gz
[root@localhost 8081]# tar -xvf apache-tomcat-7.0.70.tar.gz //解压,8080的也要解压
(2)因为这有一个Tomcat的端口号不同,默认是8080,所以这需要我们修改默认监听的端口号为8081,
[root@localhost 8082]# cd apache-tomcat-7.0.70/conf/
[root@localhost conf]# ls
catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml web.xml
[root@localhost conf]# vim server.xml //编辑配置文件
这里我们需要修改3个端口号:
22 <Server port="8015" shutdown="SHUTDOWN">
71 <Connector port="8081" protocol="HTTP/1.1"
93 <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
(3)因为这里用到了一个新的端口号,所以我们需要将8081、9001端口号加入防火墙中去;
[root@localhost conf]# firewall-cmd --add-port=8081/tcp --permanent
[root@localhost conf]# firewall-cmd --add-port=9001/tcp --permanent
[root@localhost conf]# firewall-cmd --reload
success
(4)这下我们就可以通过浏览器访问到我们的Tomcat主页面:
(5)接下来需要我们区分一下两个Tomcat页面,保证我后面的访问和跳转是正确的;这里我们编辑一个简单的HTML文件,一个里面显示8080,一个显示8081。
第一个:
<h1>
8080!!!
</h1>
第二个:
<h1>
8081!!!
</h1>
(6)根据要求在分别放入8080的到/8080/apache-tomcat-7.0.70/webapps/edu/a.html中,将8081放入/8081/apache-tomcat-7.0.70/webapps/vod/a.html中;然后测试。到这里准备工作做的差不多了,就可以用我们的Nginx实现后面的要求。
2.2 实现Reverse proxy
(1)找到Nginx的配置文件,文件的位置应该在/usr/local/nginx/conf/nginx.conf中,添加如下:(这里需要注意的是大括号一定要完整,而且不要删除其他多余的括号,否则Nginx服务容易起不来)
[root@localhost sbin]# cd /usr/local/nginx/conf/
[root@localhost conf]# vim nginx.conf
server {
listen 9001;
server_name 192.168.73.128;
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
这里特别说明一下location的指令:
该指令用于匹配URL用法如下:
location [ = | ~ | ~* | ^~ ] uri { }
- = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
- ~:用于表示 uri 包含正则表达式,并且区分大小写。
- ~*:用于表示 uri 包含正则表达式,并且不区分大小写。
- ^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
(2)添加完成后启动Nginx服务:
[root@localhost nginx]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx //启动Nginx
[root@localhost sbin]# ./nginx -s reload //重新加载Nginx
(3)查看实验效果:这里我们就实现了根据不同路径访问就可以不同的服务。