使用Apache架设代理服务器
http://tech.idv2.com/2004/12/04/create-proxy-with-apache/
眾所周知Apache是目前最優秀的HTTP服務器。實際上它不僅能當作服務器使用,也能夠被用來架設代理服務器。本文就如何使用Apache架設HTTP代理服務器進行說明。
本文將基于Win32版的Apache 2.0.47進行說明。以前的Apache 1.x版配置方法稍有不同,但這里不作說明。首先是Apache的安裝。從 http://www.apache.org 上下載Apache的安裝程序,雙擊安裝程序進行安裝。安裝好之后屏幕右下方系統托盤中會出現一個紅色的羽毛狀圖標,那就是Apache的控制程序。單擊此圖標以啟動Apache服務器。這時打開IE并在IE的地址欄中輸入http://localhost/ 應當能夠看到Apache的歡迎畫面。
接下來我們修改Apache的配置文件使其支持HTTP代理服務器功能。用文本編輯器打開httpd.conf文件。該文件位于Apache安裝目錄的conf目錄下。如果你在安裝Apache的時候沒有改變安裝路徑,那么它應當位于C:\Program Files\Apache Group\Apache\conf\httpd.conf。
首先要添加代理服務器模塊。找到下面這幾行:
#LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so去掉前面的#號使相應的模塊生效。然后使用托盤中的Apache控制程序重新啟動Apache。(也可以使用命令行net stop apache2然后net start apache2命令進行服務器重啟。)這時Apache應該能夠正常啟動,雖然現在它還不是代理服務器。
然后我們在配置文件中加入下面這一行:
ProxyRequests On然后再次重新啟動Apache。這時Apache就是HTTP代理服務器了。打開IE,選擇菜單“工具→Internet選項→連接→局域網設置”,選中“為LAN使用代理服務器”,然后在下方的地址中填入127.0.0.1,端口填寫80。填好之后確定,此時如果能夠通過IE連接到Internet,則說明代理配置正確無誤。(注:此處的端口80是httpd.conf中Listen指令指定的端口號。如果你修改了Listen命令使Apache監聽其他端口,那么在IE的設置中也請做相應的改變。另外,如果你使用撥號連接的話,那么請在“工具→Internet選項→連接”中修改相應的撥號連接的代理設置,而不要修改局域網代理設置)
接下來我們嘗試一下訪問控制。編輯httpd.conf,加入下面的設置:
<Proxy *>Order allow,denyAllow from allDeny from 127.0.0.1 </Proxy>此配置的意思是,允許除本地計算機之外的所有計算機訪問代理。然后重新啟動Apache。再次試圖使用IE連接Internet,你會收到類似于下面的信息:
Forbidden You don't have permission to access http://www.google.com/ on this server.說明本地計算機已經被禁止使用代理。而相反地,下面的設置:
<Proxy *>Order deny,allowDeny from allAllow from 127.0.0.1 </Proxy>的意思是,僅允許本地計算機使用代理服務器。
Proxy指令后面的*號表示客戶端使用代理服務器訪問的目的地址。在上面兩個例子中,*號表示所有地址,即禁止使用代理服務器訪問所有地址。而如果想僅禁止某一些地址時,可以參考下面的例子:
<Proxy http://www.google.com/>Order deny,allowDeny from allAllow from 127.0.0.1 </Proxy><Proxy http://www.yahoo.co.jp/r/*>Order allow,denyAllow from allDeny from 127.0.0.1 </Proxy>上面這個例子的意思是,僅允許本地計算機訪問http://www.google.com/,并且禁止本地計算機對于http://www.yahoo.co.jp/r/下的資源的訪問。由于Apache的Proxy指令目前還不能夠支持多個目標地址,也就是說不能寫成的形式,因此如果你想對多個目標地址做出限制時,必須使用多個Proxy指令。
如果想對所有使用者(而不僅僅是部分使用者)訪問某些地址做出限制時,可以使用ProxyBlock的指令:
ProxyBlock microsoft co.jp www.google.com上面這條指令阻擋了三種目標地址:包含microsoft的地址,包含co.jp的地址,包含www.google.com的地址。但是實際使用IE測試時你會發現,http://www.google.com/和http://www.google.co.kr/(Google韓國站)將都不能訪問,而http://www.google.co.kr/并沒有滿足上面阻擋的規則。這是因為,Apache啟動時將對阻擋地址中看起來像是主機名或者域名的字符串進行域名解析,如果解析成功就阻止掉相應的目標IP地址。而www.google.co.kr和www.google.com的IP地址相同,因此www.google.co.kr也同時被阻擋了。另外,由于Apache試圖去解析域名,因此當你使用ProxyBlock時,Apache的啟動時間會變長。
另外要注意,如果寫ProxyBlock *,那么將不能通過該代理服務器來訪問任何地址。
最后再介紹一下二級代理。使用Apache可以做二級代理,即讓本身已經是代理服務器的Apache通過其他的代理服務器來連接Internet。加入以下指令:
ProxyRemote * http://12.34.56.78:8080即可讓Apache將12.34.56.78:8080作為代理服務器。ProxyRemote指令之后的第一個參數表示協議名稱或目標地址,例如:
ProxyRemote ftp http://12.34.56.78:8080 # 對于所有ftp請求使用二級代理 ProxyRemote http://www.google.com/ http://12.34.56.78:8080 # 當訪問www.google.com時使用二級代理總結
以上是生活随笔為你收集整理的使用Apache架设代理服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux获取系统UUID
- 下一篇: vmtools工具