第一步,在Linux上安裝兩個tomcat,修改好端口號后,啟動起來。
第二步,配置本地的DNS解析,即修改host文件:
第三步,配置Nginx配置文件
反向代理的配置虛擬主機配置差不多也要配置虛擬主機以攔截請求,但是響應的地址不再是本地的目錄,而是引用代理設置中的地址:
具體解釋:
先配置轉發請求的真正服務地址,即真正響應服務的tomcat的地址和端口,
用 upstream + 自定義tomcat服務器的名稱,然后里面是 server + tomcat的ip+端口
即:
然后配置請求攔截的虛擬主機:
其中的 server_name 還是攔截的請求域名,而和原來配置虛擬主機不一樣的地方就是 location中,不再配置本地目錄作為相應,而是用 proxy_pass 關鍵字來配置請求轉發的服務器名稱,具體格式為: proxy_pass http:// + 服務器名稱
其中的服務器名稱就是我們在 upstream 中配置的 真正要提供服務的tomcat的 我們自定義的名稱,即 tomcatserver1
這樣,當前台請求 虛擬主機的攔截地址 8080.itheima.com時,虛擬主機就會將請求轉發給真正的tomcat服務器 192.168.25.141:8080 來提供服務。
同理,再配置第二對請求的真正服務器 tomcatserver2 及 攔截請求的虛擬主機 server_name 8081.itheima.com
測試:
reload nginx的配置文件,然后訪問
這樣就實現了反向代理,即從表象上看,我們兩個請求都是請求的同一個ip地址同樣都是默認的80端口,但是服務器端實際上是用兩個不同的tomcat來響應的。
因為我們前面在host中配置的是同一個ip,而且沒有配端口(后面的8080和8081后面都是點,即其是域名,非端口),所以看起來像是訪問的同一個服務器ip地址和端口。
這種情況下,Nginx實際上只做了請求的轉發:請求來時,將請求轉發給對應的tomcat,tomcat處理完響應回的數據再由Nginx轉發給請求者。