你的位置: Kiyo'Space首页 服务器 阅读文章 欢迎留下您的足迹

Windows下Squid网站加速使用手记

[ 服务器 ] 分享
案例:
我们有一个网站,网站名称暂且为dummy.example.com。原先站点只建立在电信服务器上,但是随着业务的需要,越来越多的网通用户也需要访问我们的站点,这就需要我们在网通的服务器上也要建立一套电信相同的站点,为网通用户提供服务。对于用户而言,不管是电信用户还是网通用户,只需要使用同一个域名:dummy.example.com就能取得满意的访问速度。
首先要解决域名的就近性判断,或者说智能dns的问题,目前比较常用的办法有两种,一是将域名解析的工作交给像网宿等提供cdn解决方案的服务提供商来完成dns解析的工作,当然互联网上也有免费的提供智能dns解析服务的,比如http://www.dnspod.com/也提供免费的网通电信智能DNS,当然免费的同时风险也是要承担的;二是当公司规模发展到一定的程度后,可以考虑自己购买硬件设备,更有甚者,像新浪等都建有自己的cdn网络。
本文主要是介绍squid缓存服务器的运用,就一笔带过dns解析这部分。
 
接着说一下建网通站点碰到的问题:
1、因为该网站属于一个类似新闻发布的站点,大部分页面在后台发布的时候是通过生成静态页的方式发布的。也就是每天随着网站的更新,不时将会生成一部分静态页。
2、网站内的图片是通过后台上传的方式上传的,每天不定期的更新。
3、后台一次发布,电信和网通站点同步更新。
 
电信站点已经建立并且正常运行,每天都将不定期的生成静态页面和上传图片等,如果我们在网通站点上搭建和电信相同的WEB站点,势必导致两个站点之间内容的不同步,如果采用文件同步等等方式来执行,一来同步期间网通站点访问存在问题,二来同步工作在网通线路和电信线路之间频繁进行,非常麻烦。
故所以我们考虑在网通节点上搭建一台用于网站加速的Cache服务器,将源指向电信服务器,而不是建立一个WEB站点的方式来进行。采用这种方式的话,第一次访问一个页面相对较慢,而且如果动态页面很多的情况下也不宜采用。
 
Cache Server采用的软件是Squid,Squid比较理想的运行环境是类Unix的操作系统下,由于网通站点没有Linux服务器,故只能使用Windows下的squid软件,版本为squid-2.6.STABLE3。
以下为Windows下Squid的配置过程:
1、到http://www.acmeconsulting.it/SquidNT.htm网站获取最新版本的squid for windows NT
2、unzip to c:\squid
3、在c:\squid\etc目录下,
 Copy and rename the follwing files:
   squid.conf.default ==> squid.conf
   mime.conf.default ==> mime.conf
   cachemgr.conf.default ==> cachemgr.conf
4、建立d:\squid\var目录,在var目录下建立logs和cache目录,其中logs目录用于存放日志,cache目录用于存放硬盘缓存数据
5、建立系统账户squid,属于普通用户组,将来用于运行squid服务。将d:\squid目录给予squid读写权限。
6、将squid安装为服务,命令格式:squid -i [-f configfile] [-n servicename],如c:\squid\sbin\squid -i -n Squid_Proxy,将使用默认的配置文件c:\squid\etc\squid.conf,服务名称为Squid_Proxy。删除服务:squid -r [-n servicename]
7、修改配置文件squid.conf
 # 监听80端口,并配置为加速模式
 http_port 80 vhost
 # cache服务器之间通信的端口UDP
 icp_port 3130
 # cache服务器的名称
 visible_hostname cache.example.com
 # cache目录和大小的设置,1GB硬盘空间和256M内存
 cache_dir ufs d:/squid/var/cache 1024 16 256
 cache_mem 256 MB
 
 # 设置上级根服务器的地址,也就是电信源服务器地址
 # 当然cache_peer还可以设置兄弟节点、上级cache服务器等等,这里这设置了源服务器地址
 cache_peer 电信服务器IP parent 80 0 no-query originserver
 
 # 主机文件路径
 hosts_file c:/windows/system32/drivers/etc/hosts
 
 # 设置日志目录和日志格式
 access_log d:/squid/var/logs/access.log squid
 cache_log d:/squid/var/logs/cache.log
 cache_store_log d:/squid/var/logs/store.log
 emulate_httpd_log on
 
 # 允许所有用户访问
 http_access allow all
 # 缓存管理员
 cache_mgr webmaster@example.com
 
8、初始化cache目录
 c:\squid\sbin\squid -z
 如果配置文件出错的话,初始化cache目录将会出错。
9、启动Squid_Proxy服务
 运行services.msc打开服务窗口,选择Squid_Proxy服务,将启动账号设置为开始建立的squid.
 net start squid_proxy
10、检查Cache服务器运行是否正常
 找一台终端,修改终端的hosts文件,将dummy.example.com指向cache服务器的ip地址,检查网站是否正常访问。
11、其他squid命令
squid -k reconfigure  //启用新的配置文件
squid -k rotate       //截断日志
squid -k shutdown     //stop squid
 
以前使用squid都是在linux环境下使用,刚使用windows下的squid,还是存在一些问题,其中的一个问题为:
主机头文件的使用方法存在疑问,如果在cache服务器上hosts文件中加入了:
电信服务器IP  dummy.example.com
再将squid.conf中cache_peer的配置修改为:
cache_peer dummy.example.com parent 80 0 no-query originserver
重启Squid服务后,发现访问所有通过Cache服务器加速的页面都出现Access Denied。
 
 
有用的链接:
http://www.squid-cache.org
http://www.acmeconsulting.it/SquidNT.htm
http://fanqiang.chinaunix.net/adm/other/2006-05-18/4196.shtml
 
From:http://blog.sina.com.cn/u/4b56137a010006x7

没有评论

  • (Required)
  • (Required, will not be published)