Nginx:反向代理(案例)
1、案例一(通過Nginx轉發到Tomcat)
新增內容到host檔案:
測試:因為已經在host檔案中配置了IP的對應關係,訪問了www.123.com就相當於虛擬機器的IP,能夠通過www.123.com訪問成功就證明host的檔案已經生效
(3)在Nginx中進行反向代理的配置
servler_name是虛擬機器的IP,proxy_pass是要轉發到的虛擬機器的位置
如果訪問不到可以嘗試關閉防火牆,在實際的開發中不能採用關閉防火牆的方式,只能增加開放的埠
訪問的過程如下:
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> ~
訪問:
在8版本的tomcat容器中建立頁面:
"index.html" [New File]c <h1>8</h1>
測試:
(3)配置nginx
(4)開放對外訪問的埠號
(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:
zhai:
訪問:
訪問後:
瀏覽器中輸入的是80埠,也就是說剛開始先訪問的是Nginx,在Nginx內部再根據edu和zhai的不同,分別重定向到不同的tomcat中
3、總結
= :用於不含正則表示式的 uri 前,要求請求字串與 uri 嚴格匹配,如果匹配成功,就停止繼續向下搜尋並立即處理該請求。
~:用於表示 uri 包含正則表示式,並且區分大小寫。
~*:用於表示 uri 包含正則表示式,並且不區分大小寫。
^~:用於不含正則表示式的 uri 前,要求 Nginx 伺服器找到標識 uri 和請求字串匹配度最高的 location 後,立即使用此 location 處理請求,而不再使用 location塊中的正則 uri 和請求字串做匹配。