首頁 >後端開發 >php教程 >使用多個tomcat實現負載平衡後,tomcat連接埠不對外開放的情況下,實現精確存取tomcat的方法

使用多個tomcat實現負載平衡後,tomcat連接埠不對外開放的情況下,實現精確存取tomcat的方法

WBOY
WBOY原創
2016-08-08 09:28:321200瀏覽

  • 背景:

使用Nginx和兩個Tomcat實現了負載平衡,並在防火牆中關閉了tomcat的連接埠(8080和8090),對外只開放80連接埠。 Nginx設定如下:

upstream tomcatCluster {

        server :8080 ;

        server :8090 ;

        server :8090 ;    listen  80;

        server_name    dev.xjj.cn

        ...

        location / {

               let/ {

                        include proxy.conf;

                    }

        }

        …

}

註:

兩個tomcat的連接埠分別為8080和8090,location語句根據請求URI中的關鍵字「//servlet/」把請求分配到兩個關鍵字tomcat上。

需求:

當其中一個tomcat升級後,需要直接訪問它的頁面以測試是否有錯誤。

  • 需求分析:
Tomcat端口已經被防火牆禁止外部訪問,無法直接通過“http://:8080/”或“http://:8090/”造訪某個tomcat進行測試。解決的方法只能透過Nginx轉送。

  • 解決方案:
可以透過Nginx的rewrite結合proxy_pass實現對某個tomcat的直接訪問,配置及解釋如下,

在Nginx兩個配置中添加的location配置中添加location #8080埠測試頁專用

                location ~* /tomcat8080-/ {

  •                          rewrite ^/tomcat8080-(.*) /$1 break;     192.168.0.9:8080;
                }

           location ~* /tomcat8090-/ {                        include proxy. 090-(.*) /$1 break;

                        proxy_pass  http://192.168.0.9:8090;

第二個為例):

rewrite語句:把請求URI http://dev.xjj. cn/tomcat8090-/*** 替換為http://dev.xjj.cn//***

proxy_pass語句:把請求http://dev.xjj.cn //*** 替換為 http://192.168.0.9:8090//***

這樣,透過rewrite和proxy_pass語句的結合,實現了對某個tomcat的精確訪問。

以上就介紹了使用多個tomcat實現負載平衡後,tomcat連接埠不對外開放的情況下,實現精確存取tomcat的方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn