Nginx總結(五)如何配置nginx和tomcat實現反向代理
- 2019 年 10 月 3 日
- 筆記
前面講了如何配置Nginx虛擬主機,大家可以去這裡看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html
今天要說的是如何配置nginx和tomcat實現反向代理。
需要說明的是:由於本文章是nginx系列文章中的一篇,文章裡面很多其他的配置,可能前面的文章已經說講過,然後後續就沒有在介紹,如果出現有些配置沒有講,大家可能需要去看看前面的文章。
什麼是反向代理
通常的代理伺服器,只用於代理內部網路對Internet的連接請求,客戶機必須指定代理伺服器,並將本來要直接發送到Web伺服器上的http請求發送到代理伺服器中由代理伺服器向Internet上的web伺服器發起請求,最終達到客戶機上網的目的。這就是所謂的正向代理,一般就直接叫代理。
反向代理(Reverse Proxy)則是指以代理伺服器來接受internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連接的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。
Nginx 只做請求的轉發,後台有多個http伺服器提供服務,nginx的作用就是把請求轉發給後面的伺服器,決定吧請求轉發給誰處理。
如下圖:
配置Nginx反向代理
應用場景
兩個tomcat服務通過nginx反向代理,本例子使用三台虛擬機進行測試,
nginx伺服器:192.168.78.132
tomcat1伺服器:192.168.78.134
tomcat2伺服器:192.168.78.135
如下圖:
環境準備
1. 兩台 tomcat 伺服器,我這裡使用的是使用apache-tomcat-7.0.57版本,在192.168.78.134和192.168.78.135虛擬機上啟動tomcat。
2. Nginx 伺服器,這個之前安裝過,ip地址是:192.168.78.132
3. 修改兩個tomcat下的webapps/ROOT/index.jsp的內容,使用tomcat1和tomcat2兩個服務首頁顯示不同的內容。
4. 通過host文件指定aaa.test.com和bbb.test.com對應192.168.78.132虛擬機:修改window的hosts文件:(C:WindowsSystem32driversetc)
192.168.78.132 aaa.test.com 192.168.78.132 bbb.test.com
nginx反向代理配置
根據上邊的需求在nginx.conf文件中配置反向代理,如下:
#配置一個代理即tomcat1伺服器 upstream tomcat_server1 { server 192.168.78.134:8080; } #配置一個代理即tomcat2伺服器 upstream tomcat_server2 { server 192.168.78.135:8080; } #配置一個虛擬主機 server { listen 80; server_name aaa.test.com; location / { #域名aaa.test.com的請求全部轉發到tomcat_server1即tomcat1服務上 proxy_pass http://tomcat_server1; #歡迎頁面,按照從左到右的順序查找頁面 index index.jsp index.html index.htm; } } server { listen 80; server_name bbb.test.com; location / { #域名bbb.test.com的請求全部轉發到tomcat_server2即tomcat2服務上 proxy_pass http://tomcat_server2; index index.jsp index.html index.htm; } }
測試
分別訪問aaa.test.com、bbb.test.com測試反向代理。
通過上面的截圖可以看出:
請求訪問aaa.test.com通過nginx代理訪問tomcat1,
請求訪問bbb.test.com通過nginx代理訪問tomcat2。
最後
以上,就把如何配置nginx和tomcat實現反向代理講完了。雖然步驟比較多,但是操作起來還是比較簡單的。