站长论坛

标题: Squid反向代理服务器 [打印本页]

作者: tznktg    时间: 2008-10-30 08:52
标题: Squid反向代理服务器
一、需要明白的三个概念

l        Cache命中率:Cache命中在Squid每次从它的缓存里满足HTTP请求时发生。Cache命中率,是所有HTTP请求中命中的比例。WEB缓存典型的Cache命中率在30%-60%之间。

l        Cache丢失:Cache丢失在Squid不能从它的缓存里满足HTTP请求时发生。

以下情况会发生Cache丢失现象:

a)        Squid第一次接受到对特殊资源的请求时

b)       Squid清除缓存以释放空间给新对象

c)       被请求的资源不可达

l        Cache确认:保证Squid不对用户返回过时数据。重复使用缓存对象时,从原始服务器确认它是否仍然有效。

二、Squid对系统和硬件需求

l        可以使用各类型的类unix系统,Linux、FreeBSD

l        内存是最重要的资源,内在短缺会严重影响性能;磁盘空间也是另一个重要因素,更多磁盘空间意味着更多的缓存目标和更高的命中率。

磁盘空间和内在之间关系的基本规则:每G磁盘空间需要32M内在。

内存需求依赖如下事实:缓存目标大小,CPU体系(32位/64位),同时在线的用户数量,使用的特殊功能。

建立一个足够磁盘空间,可存储3-7天WEB流量数据的系统。

三、Squid的安装

Squid在高负载下,需要大量的内核资源,需要给系统配置比正常情况更高的文件描述符和缓存。最好在开始编译Squid之前来增加这些限制的大小。

Squid在用完文件描述符会导致拒绝服务,Squid发现文件描述符短缺时,会发布警告。大多数情况下1024个文件描述符足够了,非常忙的Cache可能需要4096或更多,在配置文件描述符限制时,推荐设置系统级限制的数量为每个进程限制的2倍。

l        调整内核

文件描述符

临时端口范围

四、Squid配置

l        Cache_effective_user squid      

执行完特别权限任务后,变成哪个用户;root用户启动Squid时才使用到此指令。只有root用户能绑定TCP套接字到特权端口上,如80端口。

l        http_port

告诉Squid在哪个端口侦听HTTP请求,默认端口是3128。假如将Squid作为加速器运行,该将它设为80。

l        cache_log /squid/logs/cache.log                      包含状态和调试信息

cache_access_log /squid/logs/access.log         /dev/null

cache_store_log /squid/logs/store.log                  none

l        visible_hostname squid.packet-pushers.net            设置运行Squid的主机名

l        cache_mgrSquid@web-cache.net                  管理员联系信息

l        cache_dir scheme directory size L1 L2                  readonly|max-size

l        cache_swap_low                                      保持磁盘使用量在这个值左右

l        maximum_object_size                                 比此值更大的响应不会被缓存

l        minimum_object_size                                 比此值小的响应不会被缓存

l        cache_replacement_policy                              磁盘cache的置换策略

五、Squid运行

l        Squid –k reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse

      Reconfigure         重新读取配置文件

             Rotate                   导致Squid滚动它的日志

            Shutdown             发送关闭Squid进程的信号

            Interrupt             立刻关闭Squid

             Kill                     发送kill信号给Squid

             Debug                   将Squid设置成完全调试模式

             Check                   检查运行中的Squid,显示Squid是否在运行

             Parse                   解析Squid.conf文件,如果配置文件有错误,返回非0值

l        Squid –s            激活日志记录到syslog进程,squid使用local4 syslog设备。

l        Squid –z               初始化cache,或者交换,目录,在首次运行或增加新cache时。

l        %Squid –N –d1N保持Squid在前台运行,d1在标准错误显示1级调试信息。

六、访问控制

一些基本的ACL类型:

l        IP地址         使用对象:src/dst/myip

l        域名            使用对象:srcdomain/dstdomain/cache_host_domain

l        用户名         使用对象:ident/proxy_auth

l        正则表达式      使用对旬:srcdom_regx/dstdom_regex/url_regex/urlpath_regex/browser

referer_regex/ident_regex/proxy_auth_regex/req_mime_type/rep_mime_type

             acl Foo url_regex –I ^http://www

l        Tcp端口号      使用对象:port/myport

l        自主系统号      使用对象:src_as/dst_as

七、反向代理的配置

http_port 80                                   指定squid监听HTTP请求的端口

httpd_accel_host 192.168.0.100         指定web服务器的IP地址

httpd_accel_port 80                         指定web服务器的端口号

httpd_accel_single_host     on           squid转发cache丢失到httpd_accel_host定义主机                  

访问控制

acl acceleratedProtocol protocol HTTP   

acl acceleratedPort port 80                  

acl All src 0/0

acl TheOriginServer dst 192.168.113.0

http_access allow TheOriginServer acceleratedProtocol acceleratedPort

http_access deny All




欢迎光临 站长论坛 (http://tzlink.com/bbs/) Powered by Discuz! X3.2