我在《Perl、PHP、ASP、JSP技術比較》一文中曾經對四種流行的網站設計語言進行了評測和對比,常言道魚與熊掌皆我所欲,兩者不可兼得,那麼有沒有一種方法,可以做到魚與熊掌兼得,同時支援這四種語言的Web伺服器呢,今天我就介紹一下基於Windows Server 2003的同時在一個80連接埠支援這四種語言的方法。
我們的策略是:安裝三個Web伺服器,Apache負責支援perl和php,IIS負責支援asp,Tomcat負責支援jsp,通過Apache的proxy_module將三個伺服器整合到一個80連接埠。
安裝的方法是,先安裝IIS、Apache和Tomcat,配置Apache使用80連接埠,Tomcat使用8080連接埠,IIS使用8081連接埠。
接著在Apache中修改httpd.conf檔案,啟用proxy_module和proxy_http_module,修改的內容是:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
然後在Apache的httpd.conf檔案中增加如下幾行:
ProxyPass /php !
ProxyPass /asp/ http://localhost:8081/
ProxyPassReverse /asp/ http://localhost:8081/
ProxyPass /jsp/ http://localhost:8080/
ProxyPassReverse /jsp/ http://localhost:8080/
然後在<Directory>中設定各個服務所在網站的目錄許可權,這樣php目錄即可跑apache,支援php和perl,而asp目錄則跑IIS,jsp目錄跑Tomcat,全部都可共用80連接埠,一個連接埠同時支援Perl、PHP、ASP、JSP四種語言,相容性很好,效能也不錯。
另外,將上述命令放在<VirtualHost>中,可以實現不同的虛擬機器主機使用不同的Web伺服器,同一個連接埠同樣可以跑多個Web Server,這對於那些出售虛擬機器主機的人來說很有用,如果你想在一台Windows伺服器上配置不同的Web服務的話也可以嘗試一下。
以上配置在Windows Server 2003、Apache 2.2.6、Tomcat 6.0.16、IIS 6.0的環境下調試通過,運行正常。