中小型web网站架构初探之四:前端SQUID高速WEB缓存服务器的搭建-阿里云开发者社区

开发者社区> 开发与运维> 正文

中小型web网站架构初探之四:前端SQUID高速WEB缓存服务器的搭建

简介: SQUID+GZIP+IIS的完美结合!SQUID如果不能搞定GZIP,那么肯定流量虚高的,所以SQUID高速WEB缓存服务器的关键问题在于搞定GZIP。

SQUID+GZIP+IIS的完美结合!

SQUID如果不能搞定GZIP,那么肯定流量虚高的,所以SQUID高速WEB缓存服务器的关键问题在于搞定GZIP。

以下是实例过程

为了原生支持GZIP,4899网通WEB缓存服务器用了 SQUID3.0 FOR WINDOWS 

下载地址 http://www.acmeconsulting.it/SquidNT.html

1.建立SQUID缓存目录在 d:/newcache 给user用户以完全控制权限

2. 把squid压缩包解压到C盘目录,进入squid/etc目录,复制一分,然后重命名把原文件的.default全去掉

3.开始编辑 squid.conf

a.我们对外用80端口,所以用批量替换 3128 替换为 80
b.搜索 http_port 80 后面加上 vhost 变成

程序代码 程序代码

http_port 80 vhost
icp_port 3130
cache_mem 433M (取内存的1/3+100M)
cache_dir aufs d:/newcache 12000 16 256
maximum_object_size 10240 KB
maximum_object_size_in_memory 6000 KB
memory_pools on
memory_pools_limit 100 MB
cache_swap_high 98%
cache_swap_low 90%
error_directory c:/squid/share/errors/Simplify_Chinese
hosts_file c:/windows/system32/drivers/etc/hosts
cache_peer www.4899.com parent 80 0 no-query originserver no-digest name=cache0
cache_peer 125.46.39.22 parent 8080 0 no-query originserver no-digest name=cache1
cache_peer 4899-img.mfcdn.com parent 8080 0 no-query originserver no-digest name=cache2
cache_peer 4899-flash.mfcdn.com parent 8080 0 no-query originserver no-digest name=cache3
cache_peer_domain cache0 www.4899.com 4899wt.4899.com
cache_peer_domain cache1 125.46.39.22
cache_peer_domain cache2 4899-img.mfcdn.com
cache_peer_domain cache3 4899-flash.mfcdn.com
#配置本机squid允许接受访问的域名,请注意name的对应
acl Safe_ports port 80
acl Safe_ports port 81
acl Safe_ports port 3130
http_access allow all
#允许以上端口的代理



期间找到 http_access deny all #掉他

4.建立缓存目录,修改hosts
通过cmd进入 c:/squid/sbin
squid -z
将建好缓存
squid -i
将squid注册为系统服务,在服务里,找到他,设置自动启动

进入 c:/windows/system32/drivers/etc/ 编辑 hots文件,将 www.4899.com 指向源服务器电信ip
61.152.249.77 www.4899.com

5.启动squid服务,在服务中启动他

6.为了使squid能响应iis的GZIP,要在源服务器做一定修改

a.经典的IIS启用GZIP的教程如下:

复制 C:/Windows/system32/inetsrv/metabase.xml 到另外的备份文件夹中.

在开始菜单中启动 Internet 信息服务(IIS)管理器,右键点击“网站”属性,打开“服务”选项卡,勾选“HTTP 压缩”的两个选项。“临时目录”和“临时目录最大容量”可根据需要自行设置。设置完成后点击确定。

右键点击“网站”下方的 “Web服务扩展”,添加一个新的Web服务扩展,扩展名填写为“HTTP Compression”或其他,都可以。“要求的文件”添加:c:/windows/system32/inetsrv/gzip.dll ,并勾选“设置扩展状态为允许”,完成后点击确定。

在开始菜单中运行 notepad C:/Windows/system32/inetsrv/metabase.xml ,打开metabase.xml 文件,请在任何改动前再次确认该文件已经备份。

搜索并找到 metabase.xml 文件中的 <IIsCompressionScheme    片段中的 HcScriptFileExtensions,依照原有文件的格式添加你希望进行 HTTP 压缩的文件扩展名,静态文件HcFileExtensions可添加 JS,CSS 等; 动态文件 HcScriptFileExtensions 可添加"ASPX""ASMX",如下:

<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
    HcCompressionDll="%windir%/system32/inetsrv/gzip.dll"
    HcCreateFlags="0"
    HcDoDynamic

Compression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="FALSE"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
     html
     js
     css
     txt"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
     aspx
     asmx
     dll
     exe"
>
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
    HcCompressionDll="%windir%/system32/inetsrv/gzip.dll"
    HcCreateFlags="1"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
     html
     js
     css
     txt"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
     aspx
     asmx
     dll
     exe"
>
</IIsCompressionScheme>

注意“Compression/deflate”和“Compression/gzip”两个片段都需要修改。动态压缩等级,HcDynamicCompressionLevel 建议设置为“9”
如果你的服务器上某一个Web站点不希望启用 IIS 压缩,请运行以下脚本:

cscript. C:/Inetpub/AdminScripts/adsutil.vbs set w3svc/site#/root/DoStaticCompression False
cscript. C:/Inetpub/AdminScripts/adsutil.vbs set w3svc/site#/root/DoDynamicCompression False

如果想增加启用 HTTP 压缩的文件类型,请运行以下脚本:

"" 中为文件扩展名,别忘了把原有的扩展名加上。

静态文件压缩:

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "txt" "doc" "ppt" "xls"

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "txt" "doc" "ppt" "xls"

动态文件压缩:

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "aspx" "asmx" "dll" "exe" "php"

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" "aspx" "asmx" "dll" "exe" "php"

将site#替换为该 Web 站点的 ID。Web 站点的 ID 是什么到“日志记录属性”中看一下日志记录的“日志文件名”前面的路径就知道了。

运行以上脚本前务必备份,运行后再次执行“IISReset”使生效.

现在看一下 HTTP 压缩后的效果吧:

测试 HTTP 压缩效果的工具:

http://www.pipeboost.com/

b.做适当修改,以适应squid缓存需要

在开始菜单中运行 notepad C:/Windows/system32/inetsrv/metabase.xml ,打开metabase.xml 文件,请在任何改动前再次确认该文件已经备份

HcNoCompressionForHttp10="TRUE"
HcNoCompressionForProxies="TRUE"

上面这俩改成FALSE

然后查找 HcDoDynamicCompression 也要改成 FALSE,这实际上是关闭了动态加速,以4899小游戏网站配置SQUID+GZIP的经验,HcDoDynamicCompression="TRUE"时,SQUID缓存动态文件会出现问题,关了就好了。

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章