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的所有主机列表
本文转自:
http://www.skyhe.com/blog/bloget/home/review.asp?id=600
---------------------------------------------------------------------------------------------------------------------------------
说人之短,乃护己之短。夸己之长,乃忌人之长。皆由存心不厚,识量太狭耳。能去此弊,可以进德,可以远怨。
http://www.blogjava.net/szhswl
------------------------------------------------------------------------------------------------------ ----------------- ---------
posted on 2008-01-23 19:38
宋针还 阅读(1559)
评论(0) 编辑 收藏 所属分类:
反向代理