Proxy指令后面的*号表示客户端使用代理服务器访问的目的地址。在上面两个例子中,*号表示所有地址,即禁止使用代理服务器访问所有地址。而如果想仅禁止某一些地址时,可以参考下面的例子:
Order deny,allow
Deny from all
Allow from 127.0.0.1
Order allow,deny
Allow from all
Deny from 127.0.0.1
上面这个例子的意思是,仅允许本地计算机访问
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时使用二级代理