星期日, 九月 17, 2006

代理服务器自动配置脚本 Proxy Auto-Config File

很多时候你在Internet接入时只使用代理方式而非NAT,那么给使用代理的客户终端设置代理服务器将是一件很烦琐的事情,特别是当代理服务器 进行各种改动(比如服务器IP地址,服务端口等等变了)后,你不得不对通知所有的客户重新进行设置。Proxy Auto-Config(PAC)脚本将帮助你解决这些问题。
很多时候你在Internet接入时只使用代理方式而非NAT,那么给使用代理的客 户终端设置代理服务器将是一件很烦琐的事情,特别是当代理服务器进行各种改动(比如服务器IP地址,服务端口等等变了)后,你不得不对通知所有的客户重新 进行设置。Proxy Auto-Config(PAC)脚本将帮助你解决这些问题。

也许你已经注意到Internet Explorer的代理设置里面有一个“使用自动配置脚本”的选项,这里的自动配置脚本指的就是PAC脚本。这是一种以.pac为扩展名的 JavaScript脚本,我们可以把它放在内部网络的某个web服务器上,设置客户端IE浏览器把“自动配置脚本选项”指向它(比如http: //192.168.100.1/proxy.pac),完成集中设置代理配置的工作。

PAC脚本还可以根据用户访问请求的不同设置不同的代理策略,比如,用户访问内部网的某台服务器时,PAC脚本可以告诉浏览器该访问将不通过代理服务器,而用户访问的是内部网以外的地址时,PAC脚本告诉浏览器这个访问请求使用代理。

PAC脚本另外一个重要的应用是多台代理服务器并存的情况下,通过pac脚本的控制:

l 用户随机选择使用多台代理服务器中的任意一台来达到流量负载均衡的目的;

l 管理员通过PAC脚本控制用户使用和不使用某台代理服务器,这样可以空出时间对代理服务器进行维护;

l 让服务器工作在主备模式,当主服务器宕机时,会自动切换到其它备用服务器而不会中断服务;

l 根据访问目的地的不同,自动选择最佳代理服务器。

PAC脚本中必须定义一个名为FindProxyForURL的函数,这个函数会被浏览器自动调用。其格式如下:

function FindProxyForURL(url, host)

{

……

}

下面给出一个实际应用中使用过的简单例子,这里只有1台squid代理服务器:134.40.22.48,服务端口是3128,脚本中根据客户端IP地址判断用户通过何种途径访问Internet或其他资源:

function FindProxyForURL(url, host)

{

if (isInNet(myIpAddress(), "10.21.193.0", "255.255.255.0")) {

return "DIRECT";

} else {

return "PROXY 134.40.22.48:3128";

}

}

根据上面的脚本,整个局域网中,除了地址是10.21.193.0/255.255.255.0的终端,其他终端访问Internet都要经代理服务器134.40.22.48。

灵活运用pac脚本可以为你的网络维护工作带来很多方便。关于Proxy Auto-Config文件的格式和相关函数这里不再叙述,你可以访问Netscape网站上提供的文档来了解更多:

http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html

没有评论: