目录

一、Reverse proxy实例(1)

1.1 准备环境

1.2 实现Reverse proxy

二、Reverse proxy实例(2)

2.1 准备工作

2.2 实现Reverse proxy


一、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文件中添加域名对应关系,相关路径如图所示;

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)查看实验效果:这里我们就实现了根据不同路径访问就可以不同的服务。

 

 posted on 2021-04-04 22:20  嚴∞帅  阅读(335)  评论(0编辑  收藏  举报