Apache搭建Windows代理服務器

Apache搭建代理服務器

作者: zbuger

博客: https://blog.csdn.net/zbuger/article/details/51648048

Apache版本2.2

衆所周知Apache是目前最優秀的HTTP服務器。實際上它不僅能當作服務器使用,也能夠被用來架設代理服務器。本文就如何使用Apache架設HTTP代理服務器進行說明。

本文將基於Win32版的Apache 2.0.47進行說明。以前的Apache 1.x版配置方法稍有不同,但這裏不作說明。

Apache的安裝。

http://www.apache.org 上下載Apache的安裝程序,雙擊安裝程序進行安裝。安裝好,啓動Apache服務器。這時打開IE並在IE的地址欄中輸入http://localhost/ 應當能夠看到Apache的歡迎畫面。

httpd.conf

接下來我們修改Apache的配置文件使其支持HTTP代理服務器功能。用文本編輯器打開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。(也可以使用命令行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,deny
    Allow from all
    Deny 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,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>

的意思是,僅允許本地計算機使用代理服務器。

Proxy指令後面的*號表示客戶端使用代理服務器訪問的目的地址。在上面兩個例子中,*號表示所有地址,即禁止使用代理服務器訪問所有地址。

禁止某一地址

而如果想僅禁止某一些地址時,可以參考下面的例子:

<Proxy http://www.google.com/>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>

<Proxy http://www.yahoo.co.jp/r/*>
    Order allow,deny
    Allow from all
    Deny from 127.0.0.1
</Proxy>

上面這個例子的意思是,僅允許本地計算機訪問http://www.google.com/ ,並且禁止本地計算機對於http://www.yahoo.co.jp/r/ 下的資源的訪問。由於Apache的Proxy指令目前還不能夠支持多個目標地址,也就是說不能寫成<Proxy http://www.google.com/ http://www.yahoo.co.jp >的形式,因此如果你想對多個目標地址做出限制時,必須使用多個Proxy指令。

ProxyBlock

如果想對所有使用者(而不僅僅是部分使用者)訪問某些地址做出限制時,可以使用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時使用二級代理


在windows配置Apache httpd代理服務器

作者: 霹靂小智哥

博客: https://blog.csdn.net/qwert678000/article/details/78789974

配置代理信息

打開配置文件Apache24/conf/httpd.conf:

Listen端口修改(修改成自己要監聽的端口和ip)

Listen 192.168.2.5:9001

加載所需的模塊

LoadModuleaccess_compat_module modules/mod_access_compat.so
LoadModulelbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModulelbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModulelbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModulelbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModuleproxy_module modules/mod_proxy.so
LoadModuleproxy_connect_module modules/mod_proxy_connect.so
LoadModuleproxy_ftp_module modules/mod_proxy_ftp.so
LoadModuleproxy_html_module modules/mod_proxy_html.so
LoadModuleproxy_http_module modules/mod_proxy_http.so
LoadModulexml2enc_module modules/mod_xml2enc.so

# 註釋掉ssl模塊,不然啓動的時候需要443端口會報錯
#LoadModulessl_module modules/mod_ssl.so

添加Proxy配置, 開啓Apache正向代理並允許所有的請求可以訪問代理

ProxyRequests On
<Proxy *>
    Requireall granted
</Proxy>

Linux客戶端配置驗證

vi /etc/profile //編輯此文件,在最下方添加如下代理配置

http_proxy=192.168.2.5:9901         # http協議使用代理服務器地址
https_proxy=$http_proxy             # https協議使用安全代理地址
no_proxy=localhost,127.0.0.1        # 不使用代理的主機或IP
export http_proxyhttps_proxy no_proxy

其中

172.16.56.45::代理地址,可以是IP,也可以是域名;
9901:使用的端口;

保存退出,source /etc/profile 立即生效。測試:

[root@localhost temp]# cd ~/temp
[root@localhost temp]# wget www.baidu.com
--2019-01-07 13:41:25--  http://www.baidu.com/
正在連接 192.168.2.6:80... 已連接。
...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章