Apache反向代理Tomcat(mod_proxy方式)
環境使用兩臺服務器,apache服務器IP為192.168.8.18,tomcat服務器地址為192.168.8.16
Tomcat搭建(192.168.8.16):
安裝JDK:
官方網站下載二進制包
# chmod +x jdk-6u45-linux-i586-rpm.bin# 賦予執行權限 # ./jdk-6u45-linux-i586-rpm.bin# 執行
默認安裝在/usr/java目錄下
# vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/jdk1.6.0_45# 聲明環境變量 export PATH=$PATH:$JAVA_HOME/bin# 追加PATH變量 # java -version# 測試成功與否
安裝Tomcat:
# wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz # tar xf apache-tomcat-7.0.82.tar.gz # cp apache-tomcat-7.0.82 /usr/local/ -rf # cd /usr/local/ # ln -sv apache-tomcat-7.0.82 tomcat # vim /etc/profile.d/tomcat.sh export CATALINA_HOME=/usr/local/tomcat export PATH=$PATH:$CATALINA_HOME/bin # vim /etc/rc.d/rc.local /usr/local/tomcat/bin/catalina.sh start# 開機啟動 # /usr/local/tomcat/bin/catalina.sh start# 啟動tomcat服務
打開http://192.168.8.16:8080/測試下頁面是否正常
Apache搭建(192.168.8.18):
準備工作:
# tar xf apr-1.6.3.tar.gz # tar xf apr-util-1.5.1.tar.gz # tar xf httpd-2.4.29.tar.gz # ./configure --prefix=/usr/local/apr # make # make install # cd apr-util-1.5.1 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr # make # make install # yum -y install pcre-devel
Apache安裝:
要使用mod_proxy與Tomcat實例連接,需要apache已經裝載mod_proxy、mod_proxy_http、mod_proxy_ajp和proxy_balancer_module(實現Tomcat集群時用到)等模塊
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer # make # make install # vim /etc/rc.d/rc.local # /usr/local/apache/bin/apachectl start # vim /etc/profile.d/apache.sh export PATH=$PATH:/usr/local/apache/bin
配置apache通過mod_proxy模塊與Tomcat連接:
# vim httpd.conf
#DocumentRoot "/usr/local/apache/htdocs" # 註釋掉,開啟虛擬主機
Include /etc/httpd/extra/httpd-proxy.conf # 同時添加一行指向獨立配置文件
# vim /etc/httpd/extra/httpd-proxy.conf # 編輯配置文件,添加如下內容
<VirtualHost *:8080>
ProxyVia Off
ProxyRequests Off
ProxyPass / http://192.168.8.16:8080/
ProxyPassReverse / http://192.168.8.16:8080/
<Proxy *>
Require all granted
</Proxy>
<Location / >
Require all granted
</Location>
</VirtualHost>
關於如上apache指令的說明:
ProxyPreserveHost {On|Off}:如果啟用此功能,代理會將用戶請求報文中的Host:行發送給後端的服務器,而不再使用ProxyPass指定的服務器地址。如果想在反向代理中支持虛擬主機,則需要開啟此項,否則就無需打開此功能。
ProxyVia {On|Off|Full|Block}:用於控制在http首部是否使用Via:,主要用於在多級代理中控制代理請求的流向。默認為Off,即不啟用此功能;On表示每個請求和響應報文均添加Via:;Full表示每個Via:行都會添加當前apache服務器的版本號信息;Block表示每個代理請求報文中的Via:都會被移除。
ProxyRequests {On|Off}:是否開啟apache正向代理的功能;啟用此項時為了代理http協議必須啟用mod_proxy_http模塊。同時,如果為apache設置了ProxyPass,則必須將ProxyRequests設置為Off。
ProxyPass [path] !|url [key=value key=value ...]]:將後端服務器某URL與當前服務器的某虛擬路徑關聯起來作為提供服務的路徑,path為當前服務器上的某虛擬路徑,url為後端服務器上某URL路徑。使用此指令時必須將ProxyRequests的值設置為Off。需要註意的是,如果path以“/”結尾,則對應的url也必須以“/”結尾,反之亦然。
另外,mod_proxy模塊在httpd
# apachectl start
訪問http://192.168.8.18:8080/測試是否代理了192.168.8.16:8080
Apache反向代理Tomcat(mod_proxy方式)