Squid FreeBSD 上安装CDN应用Word下载.docx
《Squid FreeBSD 上安装CDN应用Word下载.docx》由会员分享,可在线阅读,更多相关《Squid FreeBSD 上安装CDN应用Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
但是,随着互联网的规模越来越大,这一点造成了众多不同网络结构并存的局面。
不同网络间的兼容以及不同网络运营商/ISP之间的传输瓶颈等问题使得数据的流通受到限制。
据统计,现有互联网上的平均传输速率不高于30Kbps。
另外,现有的互联网以数据包传输为基础,任何一个数据包的丢失或出错都必须重新发送,而平均一个重传过程需要3秒钟,从而导致延迟。
并且现有的HTTP协议也有诱发延迟的因素,据调查,完整下载一个网页,需要在用户和服务器之间往返20~100次。
最后,现有的路由技术以路由器工作状态的历史数据为依据来确定当前数据包的传输路径,无法真实反应当前的路由和网络连接状况。
这往往会导致数据传输所经过的路径并不是当前的最佳路径。
而且,众多的路由器和交换机不但使数据传输的时间延迟增大,还会增加出错的几率,因为任何一个路由器出现问题都会影响到整个传输过程。
CDN工作原理示意图:
CDN对网络的优化作用:
CDN系统通过在精心挑选的网络各处放置节点服务器,从而将网站的内容放置到离用户最近的地方,避免了上述影响互联网传输性能的“第一公里”和“网间互联瓶颈”等各个环节,为改善中国的互联网环境、解决网站的服务质量和提高用户的上网速度提供了有效的解决方案。
CDN对网络的优化作用主要体现在如下几个方面:
◆ 解决服务器端的“第一公里”问题
◆ 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响
◆ 减轻了各省的出口带宽压力
◆ 缓解了骨干网的压力
◆ 优化了网上热点内容的分布
CDN对网络的优化作用原理图如下:
Squid2.5安装
下载&
安装
squid的2.5稳定版本是squid-2.5.STABLE13,先下载安装包,再安装:
代码:
#cd/tmp
#mkdirsquidinstall
#cdsquidinstall
#fetchhttp:
//www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE13.tar.gz
#tarxzvfsquid-2.5.STABLE13.tar.gz
#cdsquid-2.5.STABLE13
#./configure--prefix=/usr/local/squid
#make
#makeinstall
看到类似于下图的提示,并且没有出现ErrorCode:
1之类的错误提示,证明Squid已经安装完成了!
*********************************
/usr/local/squid/sbin/squid-z
****************************
/usr/local/squid/sbin/squid
************************
配置Squid.conf
好,接下来要做的仅仅是配置Squid.conf.
#ee/usr/local/squid/etc/squid.conf
但是原来的squid.conf并不是最好的,最好是你自己新建一个Squid.conf.
#cd/usr/local/squid/etc
#mvsquid.confsquid.conf.bak
#touchsquid.conf
#eesquid.conf
照我的Squid.conf写,就能正常运行啦.在ee编辑器中输入:
http_port3128#squid的端口
cache_dirufs/cache53016256
#缓存目录:
/cache类型:
ufs大小:
530mb允许Squid在目录下建立一级(16)和二级目录(256)
cache_mem32MB#cache内存大小:
32mb
cache_store_log/var/log/squid/store.log#Squid的日志1:
在/var/log/squid下
cache_access_log/var/log/squid/access.log#Squid的日志2:
cache_log/var/log/squid/cache.log#Squid的日志3:
###cacheuser
cache_effective_usernobody#缓存用户UID
cache_effective_groupnogroup#缓存用户组GID
###cacheadmin
visible_hostnameetclub.3322.org#发生错误时,生成提示所显示的缓存服务器名
cache_mgrhorus@etclub.3322.org#发生错误时,生成提示所显示的缓存服务器管理员名
aclbadurlsdstdomain
http_accessdenybadurls
#以上2句不允许使用该缓存服务器访问
aclbadwordsurl_regex-isex
http_accessdenybadwords
#以上2句不允许使用该缓存服务器访问URL正则表达式中含sex字样的URL
httpd_accel_hostvirtual
httpd_accel_port80
httpd_accel_with_proxyon
httpd_accel_uses_host_headeron
#httpd透明代理设置
aclallsrc0.0.0.0/0.0.0.0
http_accessallowall
#以上2句允许所有ip使用该缓存服务器,这两句要放在所有的ACL语句的最后!
按Ctrl+C在command:
后输入exit,再回车.存盘退出.
以上是一个简单,但足以正常工作的squid.conf.接下来,建立缓存目录和Squid的日志.
建立Squid的日志&
缓存目录
#mkdir/squid
#chmod777/squid(缓存目录必须可写!
)
#chown-Rnobody:
nogroup/squid
#cd/var/log
#mkdirsquid
#cdsquid
#touchaccess.log
#touchcache.log
#touchstore.log
#cd..
nogroup/var/log/squid
nogroup/usr/local/squid
然后:
你应该让squid在/squid建立缓存文件系统
#/usr/local/squid/sbin/squid-z
squid提示:
Creatingswap...然后回到shell提示符:
#.注意:
以上指不出意外的话,若出现visible_hostname错误的话,证明你的squid.conf没写完整.
运行Squid好了,运行你的Squid吧!
#/usr/local/squid/sbin/squid
Q&
A
Q:
如何判断已经成功实现缓存功能
A:
#ps-waux|grepsquid
#cat/var/log/squid/cache.log(有没有正常输出)
#netstat-a|more(找3128端口)
在IE里设置好缓存服务器的地址端口.乱打一个URL,如:
www.gfnjigj.fdg
看到:
您所请求的网址(URL)无法获取
--------------------------------------------------------------------------------
当尝试读取以下网址(URL)时:
http:
//www.gfnjigj.fdg/
发生了下列的错误:
无法将您输入的主机名称:
www.gfnjigj.fdg转换成IP地址域名服务器返回以下讯息:
NameError:
Thedomainnamedoesnotexist.这表示:
ThecachewasnotabletoresolvethehostnamepresentedintheURL.Checkiftheaddressiscorrect.缓存服务器无法解析您输入网址(URL)中的主机名称,请检查该名称是否正确。
本缓存服务器管理员:
horus@etclub.3322.org
GeneratedSun,11Jul200406:
00:
58GMTbyetclub.3322.org(squid/2.5.STABLE5)就成功啦!
!
结果,访问,就...
重要Tip
小技巧:
安装好了之后,也许错误提示是英文的,这时候,你只要把/usr/local/squid/share/errors下的English目录和Simplify_Chinese目录互换名字,错误提示就成了中文啦(骗一下Squid...)呵呵
浅谈Squid的ACL语法
ACL,AccessControlList,访问控制列表.它的语法是:
(在/usr/local/squid/etc/squid.conf里添加)
acl表名表类型[-i]表的值
http_access[allow/deny]表名下面分条解释:
表名:
可以自定义
表类型:
表类型有
src源地址:
客户机的IP地址
dst目的地址:
服务器的IP地址
srcdomain源域:
客户机所属的域
dstdomain目的域:
服务器所属的域
url_regexURL正则表达式(字符串部分)
urlpath_regexURL正则表达式中的路径
time[星期][时间段]
maxconn客户端的最大连接数
-i这个参数使Squid不区分大小写
表的值:
随表的类型不同而不同
注意:
time中的星期要用如下字符:
S(Sunday,星期日)M(Monday,星期一)T(Tuesday,星期二)W(Wednesday,星期三)
H(Thursday,星期四)F(Friday,星期五)A(Saturday,星期六)
时间段的表示方式是:
XX:
00-YY:
00如:
20:
00-22:
00
http_access选项允许你设置一个表是允许(allow)还是拒绝(deny)
下面举几个例子:
防3721的ACL.在squid.conf中加入:
aclbadurlsdstdomain-i
aclbadkeywordsurl_regex-i
http_accessdenybadkeywords
解释:
badurls和badkeywords是你自定义的表名.
dstdomain是服务器的域名(目的域)而url_regex则是URL正则表达式(字符串部分)包含的内容.
http_access选项的deny则是把表badurls和表badkeywords的访问拒绝.
禁止下载Flash:
aclbadfilesurlpath_regex-i.swf$
http_accessdenybadfiles
大家在今后的配置中,慢慢体会ACL的用法吧!
达到目的喽:
错误
发生了下列的错误:
AccessDenied.拒绝访问
Accesscontrolconfigurationpreventsyourrequestfrombeingallowedatthistime.Pleasecontactyourserviceproviderifyoufeelthisisincorrect.当前的存取控制设定禁止您的请求被接受,如果您觉得这是错误的,请与您网路服务的提供者联系。
horus@etclub.3322.org