問題
為Apache啟用mod_proxy做正向代理、反向代理
解決方案
Apache提供了mod_proxy模塊用於提供代理服務,能夠支持的包括正向代理、反向代理、透明代理、緩存、負載均衡,HTTP代理、FTP代理、SSL代理等若干強大的功能。
通常我們使用的比較多的,是正向代理。也就是在瀏覽器的網絡連接屬性框中,填寫上一個代理服務器的ip和端口,即可通過代理服務器中轉,去瀏覽網頁。
配置這種代理非常簡單:
首先在apache上啟用mod_proxy模塊,需要注意的是,如果在apache-2.2上,則還需要加載名為mod_proxy_http的模塊。因為2.2系列把代理功能都拆分成N個小模塊了。
打開apache的conf,加入如下幾行:(全局配置)
ProxyRequests On
ProxyVia On
<Proxy your_apache_server_ip:80>
Order deny,allow
Deny from all
Allow from all
</Proxy>
然后保存退出,重啟加載apache服務:/etc/init.d/httpd restart或者做graceful也可以。
現在即可在瀏覽器的地址框中,填寫上your_apache_server_ip的ip地址,端口是80,開始用代理了。
使用apache提供的代理,也可以加身份驗證,或者設置ACL來限制客戶端來源等。這些配置就和普通的apache站點配置一樣。
配置反向代理就是個非常有用的功能。例如從某地訪問google太慢,但是機房服務器上很快,則可在服務器上設置反向代理連接到google,也就是把google映射到服務器上來訪問。
反向代理可以基於一整個站點,也可以基於一個目錄。首先在全局配置文件下,加入如下幾行,打開反向代理。
ProxyRequests Off
<Proxy your_apache_server_ip:80>
Order deny,allow
Allow from all
</Proxy>
然后新建一個網站,即創建一個標准的<virtualhost>配置段。這里我們將站點/test目錄設置為google的反向代理。在這段里邊,加入下邊一內容:
ProxyPass /test http://www.google.com/
ProxyPassReverse /test http://www.google.com/
然后保存配置文件重新啟動apache。現在即可使用瀏覽器來訪問我的網站的/test目錄。當打開這個目錄的時候,會發現頁面是google!點擊google的下級頁面,都可以正常的打開訪問,而此時瀏覽器中的代理服務器並未設置任何內容——這就是反向代理。
通過反向代理,我們可以將web服務器放置在防火牆后,在web服務器前端使用mod_proxy配置反向代理,並打開Apache的mod_cache緩存模塊,更可以極大的提高對靜態內容的訪問性能。