Apache可以被配置為正向(forward)和反向(reverse)代理。
正向代理是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
正向代理的典型用途是為在防火墻內的局域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性(由mod_cache提供)減少網絡使用率。
使用ProxyRequests指令即可激活正向代理。因為正向代理允許客戶端通過它訪問任意網站并且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。
注意:在您沒有對服務器采取安全措施之前,請不要用ProxyRequests啟用代理。一個開放的代理服務器不僅對您的網絡有威脅,對整個因特網來說也同樣如此。
反向代理正好相反,對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接著反向代理將判斷向何處(原始服務器)轉交請求,并將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
反向代理的典型用途是將防火墻后面的服務器提供給Internet用戶訪問。反向代理還可以為后端的多臺服務器提供負載平衡,或為后端較慢的服務器提供緩沖服務。另外,還可以啟用高級URL策略和管理技術,從而使處于不同web服務器系統的web頁面同時存在于同一個URL空間下。
可以使用ProxyPass指令激活反向代理(在RewriteRule指令中使用[P]標記也可以)。配置反向代理并不需要打開ProxyRequests指令。
正向代理
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Deny from all
Allow from internal.example.com
</Proxy>
反向代理
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /app1 http://server:port/app2
ProxyPassReverse /app1 http://server:port/app2
因此,我們可以使用反向帶來實現apache和tomcat,webphere,weblogic等應用服務器的集成。但是由于apache 反向代理只做 HTTP 透明轉發,因此應用中的連接都應該是相對路徑,不應該使用絕對路徑,更不能使用帶應用上下文。
如果后端應用中使用<c:url等生成絕對路徑的應用,最好是轉發的辦法就是讓轉發的上下文呢和目標的上下文一致。這樣就可以避免路徑的問題。
調試apache,最好用命令行執行httpd.exe -w -n “Apache” -k start,在控制臺上會顯示哪行配置有錯,在monitor 中沒有這個功能。
關于經常的提示端口被綁定或者被占用,一般可以通過netstat -ano查找到占用80端口的PID,再去任務管理器查看對應PID的進程,對進程進行操作和處理。
另外,要使用代理功能,別忘了將下面兩個模塊的裝載注釋去掉:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
后續做一些apache的cache和balancer的研究與使用。
posted on 2010-12-04 21:16
不做浮躁的人 閱讀(1856)
評論(0) 編輯 收藏 所屬分類:
others