1、案例一(通过Nginx转发到Tomcat)

(1)准备

在docker中安装tomcat和nginx

(2)具体配置

在windows系统的host文件进行域名和ip对应关系的配置

Nginx:反向代理(案例)_tomcat

添加内容到host文件:

Nginx:反向代理(案例)_正则表达式_02

 测试:因为已经在host文件中配置了IP的对应关系,访问了www.123.com就相当于虚拟机的IP,能够通过www.123.com访问成功就证明host的文件已经生效

Nginx:反向代理(案例)_端口号_03

(3)在Nginx中进行反向代理的配置

Nginx:反向代理(案例)_端口号_04

 

 

servler_name是虚拟机的IP,proxy_pass是要转发到的虚拟机的位置 

(4)访问[www.123.com:80]进行测试

浏览器访问的是nginx的地址,但是最终访问到的是tomcat的内容

Nginx:反向代理(案例)_tomcat_05

如果访问不到可以尝试关闭防火墙,在实际的开发中不能采用关闭防火墙的方式,只能增加开放的端口

访问的过程如下:

Nginx:反向代理(案例)_端口号_06

 

2、案例二

(1)先搭建两个tomcat容器

先利用两个docker镜像分别创建两个不同的tomcat容器,因为是两个tomcat容器运行在一台linux操作系统上,为了避免端口号的冲突,将其中一个容器的tomcat的server.xml配置的端口号进行修改

[root@aubin ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
aca9d39cf381        tomcat:8.5.32       "catalina.sh run"   29 minutes ago      Up 29 minutes       0.0.0.0:8081->8080/tcp   elegant_rhodes
351cbfd44713        tomcat:latest       "catalina.sh run"   30 minutes ago      Up 30 minutes       0.0.0.0:8080->8080/tcp   epic_saha

一共启动了两个容器,一个是最新版本的镜像创建的,另一个是8.5.32版本的tomcat

(2)在容器中创建页面并测试

  • 在新版本的tomcat容器中创建页面:
"index.html" [New File]                                                                                                                                                     0,0-1         All
<h1>1</h1>
~                   

访问:

Nginx:反向代理(案例)_正则表达式_07

 在8版本的tomcat容器中创建页面:

"index.html" [New File]c
<h1>8</h1>

测试:

Nginx:反向代理(案例)_端口号_08

 (3)配置nginx

Nginx:反向代理(案例)_nginx_09

 (4)开放对外访问的端口号

Nginx:反向代理(案例)_docker_10

 (5)重新加载nginx

root@977929cadeb4:/etc/nginx/conf.d# nginx -s reload
2020/10/29 08:19:52 [notice] 38#38: signal process started

(6)测试

edu:

Nginx:反向代理(案例)_nginx_11

zhai:

访问:

Nginx:反向代理(案例)_tomcat_12

访问后:

Nginx:反向代理(案例)_nginx_13

浏览器中输入的是80端口,也就是说刚开始先访问的是Nginx,在Nginx内部再根据edu和zhai的不同,分别重定向到不同的tomcat中

 

3、总结

= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

~:用于表示 uri 包含正则表达式,并且区分大小写。

~*:用于表示 uri 包含正则表达式,并且不区分大小写。

^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location块中的正则 uri 和请求字符串做匹配。

 

每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛