本站内容搜索:
   您的位置:素材中国>>教程 >>服务器 >>基础知识 >>Squid Proxy Server基础入门 提交错误报告
Squid Proxy Server基础入门
[ 来源:素材中国 | 作者:RealSKy| 时间:2005-07-26 15:20:56 | 浏览:人次 ]

 
 

  简介:

  90年代是Internet大放异彩的年代,尤其是World Wild Web的出现更使得人与人之间的距离越来越小。但是图形、影像和声音的剧增对原本速度就不快的Internet来说无疑是雪上加霜,因此大大小小Proxy Server便油然而生,其目的是为减轻网络负载,也可加快Client端网页浏览的速度。当初Proxy Server本为保护firewall内主机的安全,并作为local与remote间的传输中介,Client端不但可以浏览网页,也可以透过Proxy存取Internet资源,并抵挡外界的网络风暴与破坏。现在,代理服务器更多的功能是提供对Internet的透明、高速访问。

  说明:

  Squid Internet Object Cache (Harvest Project的后续版本) 是美国政府大力助的一项研究计划,其目的为解决网络带宽不足的问题,是现在Unix系统上使用者最多功能也最完整的一套软件,目前台湾三大网Tanet、Hinet和Seednet有超过95%以上的Proxy Server使用。Apache和Netscape虽附有Proxy软件,但因功能简单而不够普及。有关squid的详细说明可到squid网站查询http://squid.nlanr.net/Squid/。

  安装说明:

  我们这次安装的平台是Pentium 200 MMX,使用32 MB 内存,有2.5 GB的硬盘,安装的是Slackware-3.3 Linux,核心为 linux-2.0.30。目前squid稳定的版本是1.1.16,另有一个并行发展的软件squid-1.NOVM.16是适合于使用较少虚拟内存的主机,如使用的swap memory很小的话可以下载这个版本,但是file descriptors会变大,确定了我们所要使用的软件后,再来就可以把软件下载到主机中,这次我们使用的是squid-1.1.16.tar.gz,首先用adduser增加一个proxy user,因为使用root帐号开启proxy server会有安全上的问题且程序本身也不允许,再来的动作都由proxy user来完成,如此才不会有权限不足而导致cache无法写入的影响,把刚传下来的squid-1.1.16.tar.gz用tar解开,进入squid目录中依序输入

  ./configure --prefix=/usr/local/squid
  make all
  make install

  便完成了所有compiler和install的过程,此时我们的 squid完全install到/usr/local/squid目录下,进入安装完成的目录中或是link过来也可以,我们可以看到三个目录分别是bin、etc与log,进入bin中使用 squid z把要cache的目录建立起来,再来编辑etc目录下的squid.conf,有关 squid.conf语法稍后会详述,完成所有设定后便可以背景执行squid或是放在/etc/rc里,成一开机便执行的daemon,执行后可使用bin里的Client测试squid是否成功的执行,方法 Client h localhost p 3128

  squid.conf 设定说明:

  http_port: squid接受Client端http需求使用的端口,预设 值3128,在命令列中也可使用squid a做设定。

  icp_port: squid接收或传送icp讯号所使用的端口,预设值为3130,如非必要不需做修改,也可使用squid u在命令列中做设定。icp是一种udp_base的封包,主要的功能为web cache主机间连络的讯息格式,也因为是udp_base的封包,所以速度上也就比Client与server间的tcp封包还来的快,可减少cache主机间传送的时间。
cache_host: 设定其它的cache主机,当server收到Client端的request时,便透过3130这个port传送icp给设定中的每一台cache主机,如cache host有Client端所需求的资料,便传送一份给server,如没有server便自己获取资料。例:

  cache_host proxy.nsysu.edu.tw sibling 3128 3130 option

  第一为hostname。

  第二为type 有 "parent" "sibling" "multicast"。

  在web cache的阶层里,同一个cache level里以sibling称之,在上位者则为parent,不过在整个cache level中并没有很明显的分层,所以每一台主机有可能是sibling 或是 parent。当server收到request时,先对所有的sibling和parent送出ICP去询问,等待回应开始对第一个回应HIT的cache抓object,如没有人回复HIT,就对先回复MISS的parent开始获取,找到资料后送给host并自己cache起来,若都失败server便乖乖的自己去source获取资料。

  第三为proxy_port 为cache主机的porxy port。

  第四为icp_port cache主机接收icp的port,通常为3130。

  第五为option 有proxy-only、weight=n、ttl=n、no-query、default、round-robin、multicast-responder等。当proxy server的储存空间很少时,可加上proxy-only,server便不会把资料cache住,直接将资料送往Client。Weight值为与parent间的依赖性,值越大依赖性越大,预设值为1。

  Inside_firewall:设定firewall内主机domain。

  Local_domain:设定local_domain主要是把这些网络视为本身网络的一部份,如此一来当所要获取的URL为是在本网络中,则不必再向Neighbor/Sibling询问了,只要是与有直接连线的都可设为local_domain。
Local_ip:与local_domain同。

  Neighbor_timeout:当送出icp时等待回应的时间。

  Cache_mem:用来储存物件的内存大小,包括in-transit、negative和"hot"物件,通常设定实体内存的三分之一大小,所谓的实体内存是物理内存加上swap memory。In-transit比negative与hot等物件拥有较大的优先权,当有资料进来时,negative与hot objects将会首先被更新,换句话说,两者将会填满所有in-transit objects没有使用的内存空间。

  Cache_swap: Proxy使用的最大硬盘空间,当使用的空间接近此值的话,cache使用LRU(Least-Recently-Used)的设定来删除过久的资料。Squid对物件的清除是由每个物件的LRU年龄档标准,如太久没用的就会先被清除掉,倘若cache占硬盘的容量低时,物件较不易被清除,但若cache越来越满时,LRU限制较高,资料清除较快。

  Cache_log:硬盘中所要当cache的目录。

  Log_fqdn:如Client有domain name的话,access.log便会把domain name完整的记录下来。

  ftp_user:假如需要使用 anonymous ftp来获取档案,会送出后面所接的字串当 password。

  Dns_children: Squid本身附有一个dnsserver程序来处理Client端domain name的需求,一般来说,当proxy有较大的使用量时,dns children设定较多可以处理的domain name request较多也较快,但当设定过多的dnsserver对系统的performance也会有相当的影响,可使用cache manger来观看每个dnsserver的使用量决定数量的多少。

  Refresh_pattern:更新cache的时间,其演算法则如下:

  FRESH if age max
  FRESH if lm-factor < percent
  使用格式:refresh_pattern regex min percent max

  reference_age:物件的LRU,若比值大的话便清除cache中的物件。例如设定一星期,如一星期内没有存取动作,就把物件从cache中移出,假如值为零的话,物件会存放于cache中直到cache swap上限。

  Read_time:当proxy与web连接后,经过read_time的时间接收不到web站传送资料便断线,有可能是remote server或是网络连接突然性的中断等因素。

  Shutdown_lifetime:当cache server收到SIGTERM或是SIGHUP时,squid会对使用端发出"shutdown pending"讯息,并关掉所有正在进行中的动作,直到squid重新启动。

 Cache_mgr: cache server管理者的email信箱,当server无故死掉时,squid会发出一封信至管理者信箱。

  Cache_effective_user:启动squid的user名称,包含UID与GID两个栏位。

  Err_html_text:使用者浏览网页中,常常遇到不存在或连线中断的网站,squid本身会回应一个error message至用户端,squid管理者可使用这个参数来改变回应至用户端的error message,来连接至管理者的homepage。

  Deny_html_text:若遇到access control fail的情况,回应一个access fail message,squid本身提供一个简单的message,可利用此功能连接至homepage。

  以上是 squid.conf的大部参数介绍,已包括所有架设一个功能完整的cache server的所有设定。

  研究分析:

  Squid的特点也是它优于其它cache软件的地方,就是其Access Control Lists的部份,使用acl可设定那些Client发出的request会被接受,那些会被挡住,如此可减轻server端网络负载的问题。

  首先在squid.conf中定义acl name,以便于之后来设定其存取权。其格式如下:

  acl aclname acltype string1…..
  acl aclname acltype "file"….

  File必须编辑ip name而且每一行只能有一项

  acltype有下列几项:
  acl aclname src ip-address/netmask
  (定义Client的ip和netmask)
  acl aclname src addr1-addr2/netmask
  (定义一段ip address区间和netmask)
  acl aclname dst ip-address/netmask
  (URL的网络位址和遮罩)
  acl aclname srcdomain kyit.edu.tw
  (定义反查的domain)
  acl aclname dstname kyit.edu.tw
  (定义URL的domain)
  acl aclname time [day-abbrevs] [h1:m1-h2:m2]
  day-abbrevs:星期日至星期六
  acl aclname url_regex ^http:// …
  (定义符合URL字串的部份)
  acl aclname urlpath_regex xxxxx
  (定义URL的目录有符合的部份)
  acl aclname port 80 ….
  (定义所使用的port)
  acl aclname proto HTTP FTP …
  (定义所使用的通讯协定)
  acl aclname browser regexp
  (定义Client所使用的browser,如IE或Netscape等)
  acl aclname user username
  (定义存取的username)

  预先定义完所有的字串与数值后,再使用后面的参数来做控制的动作,其参数有:

  http_access:可设定allow与deny两种,格式为

  http_access allow
 
 
       
   您的位置:素材中国>>教程 >>服务器 >>基础知识 >>Squid Proxy Server基础入门
 点此在百度搜索关键字"SquidProxyServer基础入门"  点此在GOOGLE搜索关键字"SquidProxyServer基础入门"
热门文章:
  ·驱动程序在 \Device\Harddisk2 上检测到控制器错误 解   ·Request 对象 错误 'ASP 0104 : 80004005' 上传文件不
  ·Windows Server 2003 性能优化   ·一个IP建多个Web站点
  ·网管经验选择好服务器配置工具   ·MEMORY.DMP是什么文件?
  ·代理服务器应用基础知识   ·服务器不能启动的几种解决方案
  ·看看别人用什么网管最佳应用工具点评   ·Squid Proxy Server基础入门

  首页  素材图片  高精图库  矢量图库  网页素材  网页模板  壁纸  明星  下载  教程  字体  香车美女  QQ专题  论坛

网站介绍 | 广告业务 | 设计业务 | 免责声明 | 版权声明 | 联系我们|提交错误报告
素材中国版权所有