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.3:9901         # http协议使用代理服务器地址
https_proxy=$http_proxy             # https协议使用安全代理地址
no_proxy=localhost,127.0.0.1        # 不使用代理的主机或IP
export http_proxyhttps_proxy no_proxy

其中

192.168.2.3::代理地址,可以是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.3:9901... 已连接。
...


猜你喜欢

转载自blog.csdn.net/hylaking/article/details/86000792
今日推荐