1. 程式人生 > >Nginx總結(五)如何配置nginx和tomcat實現反向代理

Nginx總結(五)如何配置nginx和tomcat實現反向代理

前面講了如何配置Nginx虛擬主機,大家可以去這裡看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html

今天要說的是如何配置nginx和tomcat實現反向代理。

 

什麼是反向代理

         通常的代理伺服器,只用於代理內部網路對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:\Windows\System32\drivers\etc)

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實現反向代理講完了。雖然步驟比較多,但是操作起來還是比較簡單的。

&n