头一低,很多年都这样过去了...

欢迎来到Kittow的部落格! - http://blog.skyhe.com

Agile Web Development (敏捷Web开发)

Want to Know Something More? Move Your Mouse Here;)

我是天空的一片云,偶尔投影在你的波心,你记得也好,最好你忘掉,你我在交汇时,互放的光亮。
——徐志摩《偶然》 More...

我的VOA听写积分

2006-6-1 [返回]
[原创]Squid反向代理的缓存(加速)服务器配置笔记
作者:kittow   日期:2006-06-01
(本文遵守“创作共用”协议,转载请注明作者和原文地址)

http://skyhe.com/blog/bloget/home/review.asp?id=600
---------------------------------------------------------

Squid的介绍:
一款超强、开源的Proxy软件,除了做普通的代理服务器外,还可以做反向代理的WEB加速。如果你知道国内他的使用者有sina、sohu、netease...

忙活了两天,总算把Squid的反向代理服务器设置好了,总结一下,方便后来者

本文主要讨论的是squid反向代理模式用做web加速服务器的设置
按照本文的说明,你最终可以实现一个squid对多个网站进行缓存加速的功能(这些网站可以在squid本机上www.skyhe.com,也可以在其它服务器上bbs/photo.skyhe.com)

首先
你需要下载一份最新的Squid软件,并根据参考文章安装配置
Squid - NT版本下载:
http://www.acmeconsulting.it/pagine/opensource/squid/SquidNT.htm
Squid的正向代理服务设置相当简单,相信你很快就能获得成就感:)

其次
为了测试域名转向,你最好在自己的内网服务器上面安装一个DNS Server
(DNS Server的安装设置问题请参考相关书籍或文章),并设置好区域(正向查找、反向查找)、主机(A纪录)
www.skyhe.com  192.168.10.252
bbs.skyhe.com  192.168.10.56
photo.skyhe.com  192.168.10.119

以上252是主网站的服务器IP(和Squid同一台机器),56、119分别是其它两个网站的内部IP。

同时,你需要在本地的host文件加入内部的DNS解析,比如:
192.168.10.252  www.skyhe.com
192.168.10.252  bbs.skyhe.com
192.168.10.252  photo.skyhe.com

192.168.10.252是你的squid服务器地址,本文测试环境下,整个反向代理访问的流程是:
用户请求bbs.skyhe.com - 本机host解析为192.168.10.252 - squid服务器
 - DNS服务器(解析到192.168.1.56) - web服务器(如果没有缓存该页) - squid服务器 - 用户

然后
根据参考文章配置反向代理服务器,在配置的过程中要注意以下几点
1、服务器port设置
本机转别机和本机转本机(squid和web server在一台机器上)的设置不同
前者squid和web可以都用80端口,后者squid用80,web服务器得换端口
2、dst和dstdomain的区别
前者是对ip定义别名,后者是对domain定义别名
如果采用ip定义别名,httpd_accel_host不能采用“virtual”模式
3、httpd_accel_with_proxy
采用加速器模式,默认是关掉代理服务的,如果打开,将无法使用高速缓存加入web服务(加速器下,squid会将web内容放入内存,响应速度肯定比硬盘文件缓存快)
我的配置文件如下:
# visible name
visible_hostname cache.example.com

# cache config: space use 1G and memory use 256M
cache_dir ufs /usr/local/squid/cache 1024 16 256 
cache_mem 256 MB
cache_effective_user squid
cache_effective_group squid

# 以上主机名和缓存设置比较简单,略过

# 关键 1
http_port 80   # squid监听的端口,必须为80
# ------(你不想用户用www.skyhe.com:8001访问你的网站吧?;)

# 关键 2
httpd_accel_host virtual #加速器的主机名称或者IP地址。
# *如果是对多个域名加速,请填写"virtual"(虚拟主机模式)
httpd_accel_port 8000    #加速器的工作端口,和web服务器一致
httpd_accel_single_host off
httpd_accel_uses_host_header on
httpd_accel_with_proxy off  #是否同时运行代理服务

# 关键 3 - TAG: acl节点的设置
# 设定可以访问的域名别名
acl HostA dstdomain www.skyhe.com
acl HostB dstdomain bbs.skyhe.com
acl HostC dstdomain photo.skyhe.com
# 加速器采用http协议在8000端口监听
acl acceleratedProtocol protocol HTTP
acl acceleratedPort port 8000

# 关键 4 - 允许指定的域名在指定端口的访问
http_access allow acceleratedProtocol acceleratedPort HostA
http_access allow acceleratedProtocol acceleratedPort HostB
http_access allow acceleratedProtocol acceleratedPort HostC


# 日志设定
emulate_httpd_log on
cache_store_log none

# 管理员相关设定
acl manager proto cache_object
http_access allow manager all
cachemgr_passwd pass all

# 最后不要忘了
http_access deny all

补充
在调试的过程中你可能会不停的遇到缓存的问题,导致你不能正确的看到配置修改后的效果,所以:
1、DNS服务器段缓存的清除办法:
DNS配置 - DNS服务器上右键 - 清除缓存
2、DNS客户端缓存的清除办法:
CMD - “ ipconfig /flushdns ”
3、Squid缓存的清除办法
目前没有找到到合适的,maybe:重启squid?CMD输入“ squid -z ”?
4、IE的缓存
Internet选项 - 清除临时文件 - 清除历史纪录
5、查看DNS服务器信息的CMD命令:nslookup
例如:nslookup www.sina.com.cn
如果DNS服务器允许了区域复制,还可以在nslookup下用“ls -t abd.com”查看区域adc.com的所有主机列表

参考文章:
Windows下Squid代理服务器的配置
http://www.idcwest.cn/html/2005-09/161.html

基于反向代理的Web缓存加速——可缓存的CMS系统设计
http://www.xpcool.com/html/2005-09/159.html

《Squid 中文权威指南》译者:彭勇华(1~9)
http://bbs.chinaunix.net/viewthread.php?tid=585063&extra=page%3D1&page=1

[转载]使用反向代理技术保护Web服务器
http://www.ddvip.net/safe/hack/index1/354.htm

060627补充:
[color=#0000CD]Squid反向代理N个后台WEB实现说明[小结文档][/color]
http://dev.csdn.net/author/longrujun/34d3040adb824b65b1fad9ef5de89209.html
转自:天河网 | www.skyhe.com

Posted at 2:44 PM | Comments[17]

转自:天河网 | www.skyhe.com

发表评论
We Used Ajax to Post Your Comment!
本站评论系统采用Ajax技术,无刷新发送评论
您的大名 *   
电子邮件  
5+6=? *(请输入“5+6=?”的结果)
评论内容 *