1. 程式人生 > >Apache反向代理Tomcat(mod_proxy方式)

Apache反向代理Tomcat(mod_proxy方式)

eve mpm conf host 報文 支持 反向代理 jdk1 catalina

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方式)