apache與IIS的組合。
apache和IIS都是默認80端口,但是如果你不得不用asp程序的話,不要想著去用iasp之類的東西,還是在服務器安裝IIS吧,安裝以后把IIS修改端口,然后通過代理的方式來訪問IIS,達到不需要顯露端口的目的。
1、修改Apache配置文件,啟用Proxy模塊;
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2、繼續修改Apache配置文件,讓Apache處理對IIS的訪問;(這里假使你用的IIS端口為88)
ProxyPass /iis/ http://127.0.0.1:88/
ProxyPassReverse /iis http://127.0.0.1:88
如果你要使用虛擬主機來實現,可以用下面的代碼,(這里是video.com.cn的)
<VirtualHost 211.154.103.23:80>
ServerAdmin blog@video.com.cn
ServerName blog.video.com.cn
ProxyPass / http://211.154.103.23:88/
ProxyPassReverse / http://211.154.103.23:88/
</VirtualHost>
apache與resin1的組合。
在apache的配置文件中加:
LoadModule caucho_module "x:/resin/srun/win32-1.3.6/mod_caucho.dll"
<IfModule mod_caucho.c>
CauchoConfigFile "x:/resin/conf/resin.conf"
<Location /caucho-status>
SetHandler caucho-status
</Location>
</IfModule>
AddHandler caucho-request jsp
<Location /servlet/*>
SetHandler caucho-request
</Location>
apache與resin2的組合。
在apache的配置文件中加:
LoadModule caucho_module "x:/resin/srun/win32-1.3.6/mod_caucho.dll"
<IfModule mod_caucho.c>
CauchoConfigFile "x:/resin/conf/resin.conf"
<Location /caucho-status>
SetHandler caucho-status
</Location>
</IfModule>
apache與resin3的組合。
在apache的配置文件中加:
LoadModule caucho_module x:/resin/libexec/apache-2.0/mod_caucho.dll
<IfModule mod_caucho.c>
ResinConfigServer localhost 6802
<Location /caucho-status>
SetHandler caucho-status
</Location>
</IfModule>
AddHandler caucho-request jsp
<Location /servlet/*>
SetHandler caucho-request
</Location>
最新版Apache2.2與Tomcat的整合指南
因為復雜度太高而備受職責的JK2因為開發人員太少而停止了,JK也一年多沒更新了。但不要緊,最新版的Apache2.2中,集成了對tomcat支持的ajp——proxy_ajp模塊。
本文雖然專門介紹Linux下apache2.2的安裝與配置,但配置部分和說明部分,對windows等平臺也是適用的。
安裝Tomcat
Tomcat的安裝,請參考網上其他文章。
安裝后,
確認tomcat的配置文件server.xml中,把ajp1.3鏈接配置打開。即Define a Coyote/JK2 AJP 1.3 Connector on port 8009部分。
運行tomcat
安裝Apache
登錄linux,選擇一個目錄,下載apache源代碼:
wget http://archive.apache.org/dist/httpd/httpd-2.2.2.tar.gz
解壓縮
tar fvxz httpd-2.2.2.tar.gz
進入解壓后的目錄。進行配置:
./configure --prefix=/usr/apache --enable-module=most --enable-proxy --enable-proxy-ajp --enable-forward --enable-proxy-connect --enable-proxy-http --enable-so --enable-deflate --enable-headers --enable-include
上面的配置,用到了其他一些模塊,說不定以后會用到,如支持ssi的include模塊,但這些不是本文的重點。
編譯(編譯如果不成功,確認一下你的linux是否安裝有編譯所需要的c環境和其他需要的類庫)
make
安裝
make install
編輯/usr/apache/conf/httpd.conf文件,把端口改一改,一般的,改為80(別跟tomcat的端口沖突)
進入/usr/apache目錄,運行apache
./apachectl -k start
運行apache后,瀏覽一下是否運行正常。
關閉apache
./apachectl -k stop
把apache作為linux的啟動就運行服務程序
執行如下操作:
cp /usr/apache/bin/apachectl /etc/rc.d/init.d/httpd
確認linux以前安裝的httpd(apache)不需要了,你可覆蓋掉以前apache的httpd文件。
chkconfig --add httpd
別忘了,運行linux的setup,把httpd服務默認設定為自動運行。
到現在,你就可用另一種方式來啟動、關閉apache了。如
service httpd start
配置httpd.conf方法
老生常談,先配置文件跟路徑,配置監聽端口等。
下面,就說說配置proxy_ajp了。
#加載解析模塊(windows下,或linux采用動態加載模式下需配置。前面我們的linux編譯時把下面的模塊嵌入到了apache中,所以不用再加載)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#禁止使用proxy_ajp代理的目錄:
ProxyPass /images/ !
#使用proxy_ajp代理;下面的配置,是把所有目錄全用代理(當然,還會跟上面的禁用配置組合成完整的規則)
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
配置到現在,重啟一下apache,就可通過apache來訪問tomcat的服務了。
其他說明
1、apache對tomcat的支持歷史:apache第2.1版本后,內置了proxy_ajp,而jk2已經沒人開發了,jk則支持到apache的2.0.58版本。
proxy_ajp配置較簡單,但可配置性還不如jk2,主要表現在proxy_ajp目前只支持配置到目錄,還不支持對文件名稱的pattern模式匹配(即還不能定義到只對jsp文件起作用)。
2、因為proxy_ajp的配置,還不支持對文件名稱的pattern模式匹配,所以你要特別注意:
——盡量把jsp和靜態文件和圖片路徑分不同的目錄來管理;
——對于靜態文件和圖片路徑,如/images,你可用“ProxyPass /images !”來禁止ProxyPass,從而來讓apache來直接處理圖片的請求。
——關于apache的ssi(即shtml,include)與tomcat的集成時,shtml文件不能處于ProxyPass的控制下(即不能在ProxyPass目錄),而shtml調用的jsp須在ProxyPass有效控制下;
寫到這里,最后感嘆一聲,如果proxy_ajp能支持文件名稱匹配模式,那真是太完美了。期待著那一天。
*****解決apache “internal dummy connection ”的辦法
在我這里,該問題出現在apache2.2+tomcat 5.5的時候,apache會不斷訪問tomcat,如果是tomcat 4則沒該問題(按樓上的配置)。
解決辦法是:
配置的時候,采用-with-mpm=worker方式。
./configure --prefix=/usr/apache --enable-module=most --enable-proxy --enable-proxy-ajp --enable-forward --enable-proxy-connect --enable-proxy-http --enable-so --enable-deflate --enable-headers --enable-include -with-mpm=worker
與tomcat整合的原始出處:http://www.sooq.cn/bbs/thread.jspa?threadID=32375&tstart=0