使用Nginx和兩個Tomcat實現了負載平衡,並在防火牆中關閉了tomcat的連接埠(8080和8090),對外只開放80連接埠。Nginx配置如下:
upstream tomcatCluster {
server :8080 ;
server :8090 ;
}
server
{
listen 80;
server_name dev.xjj.cn
……
location / {
……
location ~* //servlet/ {
include proxy.conf;
proxy_pass http://tomcatCluster;
}
}
……
}
註:兩個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-/ {
include proxy.conf;
rewrite ^/tomcat8080-(.*) /$1 break;
proxy_pass http://192.168.0.9:8080;
}
#8090連接埠測試頁面專用
location ~* /tomcat8090-/ {
include proxy.conf;
rewrite ^/tomcat8090-(.*) /$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教程有興趣的朋友有所協助。