免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1157 | 回复: 0
打印 上一主题 下一主题

用squid加速apache [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-14 00:09 |只看该作者 |倒序浏览
系统:redhat as 4
apache :httpd-2.0.52-9.ent
squid :squid-2.5.STABLE6-3.4E.3
1.安装
安装squid很简单:
# yum -y install squid
配置squid
修改:/etc/squid/squid.conf成下面的
http_port 80
icp_port 0
acl QUERY urlpath_regex cgi-bin
no_cache deny QUERY
cache_mem 16 MB
cache_dir ufs /tmp 256 16 256
log_icp_queries off
buffered_logs on
emulate_httpd_log on
redirect_rewrites_host_header off
half_closed_clients off
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_mgr admin
cache_effective_user squid
cache_effective_group squid
httpd_accel_host virtual
httpd_accel_uses_host_header on
httpd_accel_port 81
这里解释一下
http_port”参数指定Squid监听浏览器客户请求的端口号,这里当然是80了
cache_dir ufs /tmp 256 16 256
cache_dir参数设定使用的存储系统的类型。一般情况下都类型应该是ufs,目录应该是“/tmp”,在该目录下使用的缓冲值为256MB,允许在“/tmp”下创建的第一级子目录数为16,每个第一级子目录下可以创建的第二级子目录数量为256
选项“httpd_accel_host”和“httpd_accel_port”定义了真正的Web服务器的主机名和端口号。在这里的配置中,真正的HTTP服务器运行的状况是虚拟主机:virtual而运行的端口是:81。
选项“httpd_accel_uses_host_header”是什么意思就不清楚了,还没看说明

3.修改apache的配置文档
这里就不说apache的安装了!
注意3个地方:

(1)
Port 80这里改成:Port 81
(2)
NameVirtualHost 221.6.145.41:81
如何没有这句,就加上这句!
(3)虚拟主机:
  ServerAdmin
webmaster@ourlinux.net
  DocumentRoot /var/www/yum.ourlinux.net
  ServerName apt.ourlinux.net
  ErrorLog logs/yum.ourlinux.net-error_log
  CustomLog logs/yum.ourlinux.net-access_log common
  ServerAdmin
webmaster@ourlinux.net
  DocumentRoot /var/www/apt.ourlinux.net
  ServerName apt.ourlinux.net
  ErrorLog logs/yum.ourlinux.net-error_log
  CustomLog logs/yum.ourlinux.net-access_log common
ip部分要一致!
4.启动!
先启动httpd
再启动squid
用squid再次疯狂加速你的web
首先你得有squid代理服务器,怎么装我就不讲了,用redhat的直接使用她的rpm安装就行。
配置squid的配置文件,使其支持httpd加速器工作方式。
编辑“squid.conf”文件(vi /etc/squid/squid.conf),增加下面内容:
http_port 80
icp_port 0
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
cache_mem 16 MB
cache_dir ufs /tmp 256 16 256
log_icp_queries off
buffered_logs on
emulate_httpd_log on
redirect_rewrites_host_header off
half_closed_clients off
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_mgr admin
cache_effective_user squid
cache_effective_group squid
httpd_accel_host 210.51.0.124
httpd_accel_port 81
http_port”参数指定Squid监听浏览器客户请求的端口号,这里当然是80了
cache_dir ufs /tmp 256 16 256
cache_dir参数设定使用的存储系统的类型。一般情况下都类型应该是ufs,目录应该是“/tmp”,在该目录下使用的缓冲值为256MB,允许在“/tmp”下创建的第一级子目录数为16,每个第一级子目录下可以创建的第二级子目录数量为256
选项“httpd_accel_host”和“httpd_accel_port”定义了真正的Web服务器的主机名和端口号。在这里的配置中,真正的HTTP服务器运行在IP地址为210.51.0.124 (
www.5ilinux.com
)的主机上,运行端口为81。
ok,squid设置完毕。
接着设置apache,很简单,只要把你的httpd监听端口设置成81就成,然后重启你的apache。
接着重启你的squid服务,现在你访问你的web网站,已经是用了squid的http加速工作模式,你可以通过看squid的log日记看到他的运行情况。
我还是没搞明白怎么配合使用虚拟主机,以上方法只实现一个域名,不知大家有没有做过虚拟主机squid加速,提点一下吧frank发表 于January 14, 2004 12:22 PM | 回复(11) | 引用(1)
回复
squid配置虚拟主机还是很简单的,仔细看说明文档
1、httpd_accel_host virtual
2、httpd_accel_uses_host_header on(说明里有,仔细看!!!)
最关键的是要在apache里改点东西:)
1、port 8080(因为squid占用了80,或者只是举个例子)
2、NameVirtualHost x.x.x.x:8080(一定要和apache本身的port一样,不让加速后的所有网站都将指向默认站点)
不对之处请指正,本人一直都这么用,没出现任何问题
传统的Squid反向代理加速十分依赖last-modified这类HTTP首部信息。
不幸的是微软的SharePoint无法生成带有恰当首部的HTTP响应。
更不幸的是这回遇到的SharePoint Portal在整合了多个自定义WebPart之后非常之慢,首页响应甚至超过了三秒钟。
下面介绍一路旁门左道,用squid加apache解决在这种不规范情形下的逆向缓存。
$ rpm -q httpd squid
httpd-2.0.40-21.11
squid-2.5.STABLE1-3.9
首先把apache bind到localhost:88。
接着将squid配置为普通的反向代理加速,这里就不细说了。
然后把以下部分添加到squid.conf:
cache_peer 127.0.0.1 parent 88 0 proxy-only no-query
acl cachable urlpath_regex "/etc/squid/cachable.lst"
cache_peer_access 127.0.0.1 allow cachable
cache_peer_access 127.0.0.1 deny all
编写如下脚本,丢到crontab:
SITE=www0.xxx.org
cd /var/www/
#wget -r -l 2 -N -A *.aspx,*.js,*.css,*.htc,*.gif,*.jpg,*.png,*.ico,*.swf
http://$SITE/default.aspx

#use the line above to cache more stuff
wget -r -l 1 -N -A *.aspx,*.js,*.css,*.htc
http://$SITE/default.aspx

ln -sf $SITE html
rm -rf cache/
cp -Rf $SITE cache
ln -sf cache html
rm -rf $SITE/
cd /var/www/html/
find . -type f | cut -b 2- | replace . . | awk '{print "^"$1"$"}' > /etc/squid/cachable.lst
/etc/init.d/squid reload
下面是加速前后的速度对比,从五秒多到二十多毫秒,用户体验得到极大改善,
加速之前:
$ ab -n 5
http://www0.xxx.org/default.aspx
  
...
Server Software: Microsoft-IIS/6.0
Server Hostname: www0.xxx.org
Server Port: 80
Document Path: /default.aspx
Document Length: 127408 bytes
Concurrency Level: 1
Time taken for tests: 26.455610 seconds
Complete requests: 5
Failed requests: 0
Write errors: 0
Total transferred: 639175 bytes
HTML transferred: 637040 bytes
Requests per second: 0.19 [#/sec] (mean)
Time per request: 5291.122 [ms] (mean)
...
加速以后:
$ ab -n 5
http://cache.xxx.org/default.aspx

...
Server Software: Apache/2.0.40
Server Hostname: cache.xxx.org
Server Port: 80
Document Path: /default.aspx
Document Length: 127408 bytes
Concurrency Level: 1
Time taken for tests: 0.132630 seconds
Complete requests: 5
Failed requests: 0
Write errors: 0
Total transferred: 638600 bytes
HTML transferred: 637040 bytes
Requests per second: 37.70 [#/sec] (mean)
Time per request: 26.526 [ms] (mean)
...
默认的squid配置不会缓存带有HTTP认证信息的请求,只要你的squid本身不跟NTLM过不去,那登陆操作倒是应该没有什么特别的问题。  

  
作者: emptyhua  2006-4-18 19:31   回复此发言   

--------------------------------------------------------------------------------

3 回复:用squid加速apache[转]  
我的站点上的所有文件都是静态html,为了进一步的加快网页速度,于是使用squid实现反向代理缓存功能。  
@ 安装squid  
为了偷懒就直接使用ports安装,因为我将所有的服务器系统都安装在/s分区中,所以设置了PREFIX为/s/squid  
# cd /usr/ports/www/squid  
# setenv PREFIX /s/squid  
# make install clean  
安装完成后编辑/s/squid/etc/squid/squid.conf,我的配置内容如下:  
########## Base control ##########  
cache_mgr webmaster  
cache_effective_user squid  
cache_effective_group squid  
visible_hostname sleepcat.3322.org  
http_port 127.0.0.1:3128  
icp_port 0  
cache_dir ufs /usr/cache 300 16 256  
cache_access_log /dev/null  
cache_log /dev/null  
cache_store_log /dev/null  
error_directory /s/squid/etc/squid/errors/Simplify_Chinese  
icon_directory /s/squid/etc/squid/icons  
mime_table /s/squid/etc/squid/mime.conf  
coredump_dir /s/squid/squid/cache  
pid_filename /s/squid/squid/logs/squid.pid  
hosts_file /etc/hosts  
unlinkd_program /s/squid/libexec/squid/unlinkd  
########## Performance control ##########  
cache_mem 8 MB  
cache_swap_low 90  
cache_swap_high 95  
maximum_object_size 4096 KB  
minimum_object_size 0 KB  
maximum_object_size_in_memory 8 KB  
ipcache_size 1024  
ipcache_low 90  
ipcache_high 95  
fqdncache_size 1024  
cache_replacement_policy lru  
memory_replacement_policy lru  
emulate_httpd_log off  
log_ip_on_direct on  
log_mime_hdrs off  
dns_timeout 2 minutes  
request_header_max_size 10 KB  
request_body_max_size 0 KB  
refresh_pattern ^ftp: 1440 20% 10080  
refresh_pattern ^gopher: 1440 0% 1440  
refresh_pattern . 0 20% 4320  
negative_ttl 5 minutes  
positive_dns_ttl 6 hours  
negative_dns_ttl 1 minute  
connect_timeout 1 minute  
read_timeout 15 minutes  
request_timeout 5 minutes  
client_lifetime 1 day  
half_closed_clients on  
maximum_single_addr_tries 1  
uri_whitespace strip  
ie_refresh off  
########## Access control ############  
acl all src 0.0.0.0/0.0.0.0  
http_access allow all  
http_reply_access allow all  
hierarchy_stoplist cgi-bin ?  
########## Accelator control ############  
httpd_accel_host virtual  
httpd_accel_port 80  
httpd_accel_with_proxy on  
httpd_accel_uses_host_header on  
########## Misc control ###########  
ftp_user Squid@  
ftp_list_width 32  
ftp_passive on  
ftp_sanitycheck on  

初始化cache  
# /s/squid/sbin/squid -z  
启动squid  
# /s/squid/etc/rc.d/squid.sh start  
@ 设置apache  
因为要对外部实现反向透明代理,所以apache不能再在外网IP的80端口服务,我将它设置到127.0.0.1的80端口,修改httpd.conf中的Listen为:  
Listen 127.0.0.1:80  
刷新apache配置:  
# apachectl restart  
@ 重定向外网IP的80端口访问  
我使用 mpd进行PPPoE拨号 ,所以外网接口为ng0,将所有发往ng0上的80端口请求转发到127.0.0.1的3128端口上,即转发到squid的服务端口。转发规则如下:  
rdr ng0 0.0.0.0/0 port 80 -> 127.0.0.1 port 3128  
同时为了使rdr规则转换后的包能通过防火墙,增加如下ipfilter过滤规则:  
pass in quick on ng0 proto tcp from any to 127.0.0.1 port 3128 keep state  
@ 设置/etc/hosts文件  
现在我们已经实现下面的功能:  
client ------> ng0:80 ------> 127.0.0.1:3128  
接下来就要使squid访问真正的服务以实现反向代理缓存。刚才我已经将apache设置到在127.0.0.1:80端口监听,现在只要让squid访问127.0.0.1:80便可,由于我们在squid的配置文件中设置了hosts文件的位置为/etc/hosts,所以我们只要在hosts文件中设置所有我们的WWW主机(包括虚拟主机)指向127.0.0.1便可。  
127.0.0.1 matthew.3322.org sleepcat.3322.org mirrors.2288.org  
同时请确保你的主机搜索顺序为 file bind,如果不是,请执行以下命令:  
# echo "file" > /etc/host.conf  
# echo "bind" >> /etc/host.conf"  
现在整个流程如下:  
client ------> ng0:80 ------> 127.0.0.1:3128 -------> 127.0.0.1:80  
127.0.0.1:80 ----------> 127.0.0.1:3128 ----------> ng0:80 ----------> client  
现在反向代理已经建成,刷新ipfilter和ipnat规则,启动squid,你会发现从外网访问你的网站的速度明显比以前快了很多,而且也支持虚拟主机。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/59472/showart_463799.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP