1. 程式人生 > 實用技巧 >Nginx:反向代理(案例)

Nginx:反向代理(案例)

1、案例一(通過Nginx轉發到Tomcat)

(1)準備

在docker中安裝tomcat和nginx

(2)具體配置

在windows系統的host檔案進行域名和ip對應關係的配置

新增內容到host檔案:

測試:因為已經在host檔案中配置了IP的對應關係,訪問了www.123.com就相當於虛擬機器的IP,能夠通過www.123.com訪問成功就證明host的檔案已經生效

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

servler_name是虛擬機器的IP,proxy_pass是要轉發到的虛擬機器的位置

(4)訪問[www.123.com:80]進行測試

瀏覽器訪問的是nginx的地址,但是最終訪問到的是tomcat的內容

如果訪問不到可以嘗試關閉防火牆,在實際的開發中不能採用關閉防火牆的方式,只能增加開放的埠

訪問的過程如下:

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 和請求字串做匹配。