我要投稿
  • 您当前的位置:365bet官方 -> 技术教程 -> 服务器网络 -> 服务器教程 -> 代理服务器教程 -> 教程内容
  • [ 收藏本页教程 ]
  • Squid+MRTG实现缓存代理代理服务器教程

    教程作者:佚名    教程来源:不详   教程栏目:代理服务器教程    收藏本页
                  摘要:Squid+MRTG实现缓存代理
    找到作者了!

    作者:紫天星
    来源:www.hackeabc.com 


    Squid是一种源代码开放的高性能代理缓存服务器。它可支持FTP,gopher和Http数据对象的代理。另外,Squid也支持SSL,多样化访问控制和代理请求的完整日志功能。通过轻量级的网际缓存协议,Squid以网状或层次的方式分配内存,这样能节省额外的带宽。提供Http服务加速代理,Web服务器把Http数据推到Squid缓存中,外界的请求访问可以通过缓存提取所需数据,实现Web服务器的动态镜像。
    另外,为了实现对Squid服务器的监控,采用MRTG。MRTG 是 Multi Router Traffic Grapher 的缩写,它主要的用途是监测网络服务设备的流量,并生成包括图片的HTML文件,可以直观的显示网络服务的流量,以提供Squid缓存服务的监测。
    通过Squid+MRTG可以配置一个完善的代理服务提供方案。下面为具体配置步骤:
    一.基础准备
    Squid下载地址:http://www.squid-cache.org
    版本:squid-2.4.STABLE4-src.tar.gz
    MRTG下载地址:http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/
    版本:mrtg-2.9.22.tar.gz
    机器配置为:256M内存,9G硬盘(其中4G分区专用缓存目录),PII433。 

    二.安装步骤
    解压Squid(一般做法,把软件包括在/opt目录下)
    #tar zxvf squid-2.4.STABLE4-src.tar.gz
    #cd squid
    //进行编译
    #./configure --prefix=/usr/local/squid --enable-delay-pools --enable-snmp --enable-cache-digests --enable-auth-modules=”NCSA”
    #make all
    #make install
    *对编译项目的解释:
    --prefix 为编译Squid所存放的目录,这里为/usr/local/squid
    --enable-delay-pools 此选项使能一个延时池,这样能对某些特定的请求限制额定带宽。
    --enable-snmp 此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。
    --enable-cache-digests 使能缓存摘要,本来此项目的是为了在Squid集群服务之间迅速发现缓存对象,这里在本地使用,可以加快请求时,检索缓存内容的速度。
    --enable-auth-modules 此编译选项启用认证模块,可以对访问代理用户进行授权。 

    安装MRTG
    #tar zxvf mrtg-2.9.22.tar.gz
    #cd mrtg*
    #./configure --prefix=/usr/local/mrtg-2
    #make
    #make install
    /* 几点说明:
    1.MRTG大部分程序是用Perl脚本写成,需要Perl版本为5.005以上才能运行,RH 7.2带有perl版本为v5.6.0,非常满足要求。(如果版本不够,请到www.perl.com下载安装。)
    2.MRTG需要zlib,gd和libpng三个处理图形的库支持,RH7.2满足此要求。(如果没有安装,请到http://www.boutell.com/gd/ ;http://www.libpng.org/pub/png/src/ ;http://www.gzip.org/zlib ;下载安装) 

    三.具体配置
    lSquid配置(仅对必要选项配置并说明):
    http_port 80
    此选项用于Squid代理所侦听的端口,由于要实现Http加速代理,则侦听端口80
    tcp_outgoing_address 255.255.255.255
    此句法指定了远程服务器的IP地址,这里我们使用255.255.255.255来指定为所有地址
    tcp_incoming_address
    这里可以使用http_port语法进行绑定端口和IP地址。表示客户端的请求。可以不使用。
    cache_mem 64 MB
    由于Squid在读写磁盘,I/O通道,数据转贮等需要大量内存,我们可以把内存值稍微设置大一些,这样可以提供服务器性能。 

    cache_swap_low 95
    这用做表示缓存内部对象的替换的衡量基线。当交换分区的磁盘利用率超越这个基线,那么缓存对象替换也就随之开始。这里是用百分率做衡量标准。 

    cache_swap_high 98
    此标记用于缓存对象替换的最高程度,当交换分区磁盘利用率接近此设置,则表示对象的更新程度更为剧烈。这里由于我的缓存区设置比较大,因此设置为98%。 

    下面几个配置标记采用系统默认配置。
    { maximum_object_size 4096 KB
    { 超过此尺寸的对象将不缓存。
    { minimum_object_size 0 KB
    { 小于此尺寸的对象将不缓存。
    { maximum_object_size_in_memory 8 KB
    { 内存中能缓存的最大对象尺寸。
    { ipcache_size 1024
    { 指定IP缓存大小。
    { ipcache_low 90
    { 缓存IP地址的最低基线。
    { ipcache_high 95
    { 缓存IP地址的最高极限。
    { fqdncache_size 1024
    { 缓存DNS全域名解析的尺寸。 

    cache_replacement_policy lru
    此标记用于当缓存新对象时,使用缓存策略来清除缓存中特定对象。这里使用lru表示:它只替换长时间没有被访问过的对象。其他策略请参看配置文档介绍。 

    memory_replacement_policy lru
    此用法同上,区别在于替换内存对象。 

    cache_dir ufs /cache 4000 16 256
    设置缓存根目录为/cache,类型为ufs,缓存区大小为4G,可以有16个二级子目录,每有二级目录有256个三级子目录。 

    cache_access_log /var/log/squid/access.log
    cache_log /var/log/squid/cache.log
    cache_store_log /var/log/squid/store.log
    cache_swap_log /var/log/squid/swap.log
    上面几项是缓存日志记录的路径和文件名。 

    log_ip_on_direct on
    记录客户端主机的IP地址。 

    log_fqdn on
    记录全DNS域名解析。 

    mime_table /usr/local/squid/etc/mime.conf
    Squid所用mime的文件路径 

    pid_filename /usr/local/squid/logs/squid.pid
    Squid进程ID的文件。 

    ftp_user Squid@ynst.net.cn
    这里可以使用匿名登陆FTP服务器。 

    ftp_list_width 32
    FTP文件列表长度,超过长度则截断文件名。
    ftp_passive on
    允许主动连接FTP服务器。 

    dns_nameservers 202.98.187.1
    指定代理的域名解析服务器。 

    authenticate_program  /usr/local/squid/bin/ncsa_auth
    /usr/local/squid/etc/passwd
    代理认证程序,这里在/usr/local/squid/etc使用htpasswd产生一个密码文件,具体方法如下:
    #htpasswd –cdb passwd auth_usr1 pass1
    #htpasswd –db passwd auth_usr2 pass2
    #htpasswd –db passwd auth_usr3 pass3
    创建passwd文件,并添加auth_usr1,auth_usr2,auth_usr3三个认证用户。 

    authenticate_children 5
    所需要要产生的认证进程数。 

    authenticate_ttl 3600
    此标记设置认证保持时间。 

    authenticate_ip_ttl 1800
    此标记设置认证绑定IP地址的时间长度。 

    authenticate_ip_ttl_is_strict on
    此标记可在authenticate_ttl时间内,拒绝其他非认证IP地址访问。 

    request_header_max_size 10 KB
    request_body_max_size 1 MB
    设置了Http请求的包头和数据大小。 

    request_body_max_size 0
    这里,请求所返回的数据大小为0,意义为没有任何限制。 

    connect_timeout 180 seconds
    read_timeout 15 minutes
    request_timeout 20 seconds
    上面几项是代理服务几个超时设置,这里使用配置文件默认值。 

    下面是访问控制列表一些配置,这里对访问的IP地址,域名,访问类型极其访问代理的权限做的限制:
    acl acldomain dstdomain .ynst.net.cn
    acl acceleratedport port 80
    acl acceleratedhost dst 202.98.187.17/255.255.255.255
    acl aclprotocol proto HTTP FTP
    acl aclmethod method GET POST 

    acl aclauth proxy_auth required  
    (注:这里使用required表示任何passwd文件中存在的合法用户才授予访问权限。) 

    acl aclsnmp snmp_community secrect
    MRTG可以使用snmp协议检测此代理服务运行状态。 

    acl aclconn maxconn 20
    可并行连接的最大数量。 

    启用定义的访问控制列表
    http_access allow manager localhost
    http_access deny manager
    http_access allow aclauth
    http_access allow acceleratedport acceleratedhost
    http_access deny all 

    下面为缓存管理设置
    cache_mgr admin@ynst.net.cn
    设置缓存管理者的接受邮件地址。 

    cache_effective_user squidusr
    cache_effective_group squidgrp
    设置执行Squid的用户和用户组。
    {注:设置用户和用户组及其权限修改方法如下:
    #groupadd squidgrp
    #useradd –g squidgrp –d /home/squidusr squidusr
    修改log日志权限属性,使squidusr有写权限。
    #chown squidusr /var/log/squid
    #chgrp&
    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.ct131.com All Rights Reserved.365bet官方 版权所有