zoukankan      html  css  js  c++  java
  • Redhat Squid Web缓存安装配置

    一、软件包

    a) squid-2.6.STABLE6.tar.bz2

    二、安装步骤

    a) Tar jxvf squid-2.6.STABLE6.tar.bz2

    b) ./configure --prefix=/usr/local/squid --localstatedir=/var/log/squid --sysconfdir=/etc --enable-async-io

    c) Make

    d) Make install

    e) Cd /usr/local/squid/etc

    f) mv squid.conf squid.conf.bak

    g) vi squid.conf

    #visible_hostname www.gxpx.com

    http_port 211.71.189.190:80 vhost vport

    #http_port 81 vhost

    visible_hostname www.gxpx.com

    #xx.xx.xx.xx为这台服务器的IP地址

    icp_port 0

    cache_mem 400 MB

    #设置Squid所能使用的内存共400MB,这个值因人而异

    cache_swap_low 90

    cache_swap_high 95

    maximum_object_size 20000 KB

    #最大缓存文件大小,超过这个值则不缓存,这个值因人而异

    maximum_object_size_in_memory 4096 KB

    cache_dir ufs /var/log/squid/cache 10000 16 256

    #磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是10G

    cache_store_log none

    #这个设置是不记录store.log

    emulate_httpd_log on

    #打开emulate_httpd_log选项,将使Squid仿照Aapche的日志格式

    logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

    #日志格式combined的设置

    pid_filename /var/log/squid/squid.pid

    cache_log /var/log/squid/cache.log

    access_log /var/log/squid/access.log combined

    #这里是设置pid和日志文件的位置,因人而异,同时日志格式是combined,awstats可以直接调用分析了

    acl all src 0.0.0.0/0.0.0.0

    acl Safe_ports port 80

    acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe

    cache deny QUERY

    #设置不想缓存的目录或者文件类型

    #acl picurl url_regex -i \.bmp$ \.png$ \.jpg$ \.gif$ \.jpeg$

    #acl mystie1 referer_regex -i aaa

    #http_access allow mystie1 picurl

    #acl mystie2 referer_regex -i bbb

    #http_access allow mystie2 picurl

    #设置防图片盗链的,其中aaa,和bbb分别是虚拟主机的域名,referer中必须包含有aaa或者bbb的域名才能访问图片

    #acl nullref referer_regex -i ^$

    #http_access allow nullref

    #acl hasref referer_regex -i .+

    #http_access deny hasref picurl

    #设置允许直接访问图片和拒绝referer中没有包含aaa或着bbb的访问图片

    cache_peer 211.71.189.190 parent 81 0 no-query originserver name=www

    http_access deny !Safe_ports

    http_access allow all

    cache_peer_access www allow all

    cache_mgr gxpx@ceat.edu

    #xx.xx.xx.xx还是本机服务器的IP,81则是apache的端口,如果你的虚拟主机有用户名和密码保护起来的目录必须设置login=PASS,否则认证会失效

    cache_effective_user nobody

    cache_effective_group nobody

    #squid使用的用户组和用户名

    h) cd /var/log/squid

    i) chown –R nobody:nobody /var/log/squid

    j) chmod 666 /var/log/squid

    k) vi /usr/local/apache/conf/httpd.conf

    NameVirtualHost 211.71.189.190:81

    <VirtualHost 211.71.189.190:81>

    ServerAdmin gxpx@ceat.edu

    DocumentRoot /usr/local/apache/htdocs/

    ServerName gxpx.com

    ServerAlias www.gxpx.com

    #ScriptAlias /cgi-bin/ "/home/aaa/cgi-bin/"

    <Directory />

    Options Includes FollowSymLinks

    AllowOverride All

    </Directory>

    </VirtualHost>

    l) /usr/local/apache/bin/apachectl –t

    m) /usr/local/apache/bin/apachectl –k stop

    n) /usr/local/apache/bin/apachectl –k start

    o) /usr/local/squid/sbin/squid –z //首次运行squid先建立缓存

    p) echo "65535" > /proc/sys/fs/file-max
    ulimit -HSn 65535
    /usr/local/squid/sbin/squid //启动squid

    q) 访问网站http://211.71.189.190/shlevod2/index.php

    r) 查看是否缓存

    s) cat /var/log/squid/access.log |grep TCP_MEM_HIT

    三、相关命令

    a) /usr/local/squid/sbin/squid –s

    b) /usr/local/squid/sbin/squid –k shutdown//关闭squid

    c) /usr/local/squid/sbin/squid –k reconfigure//重新加载squid配置

    d) Vi /etc/rc.d/rc.local

    e) /usr/local/squid/sbin/squid –s

    f) 查看你的日志文档。
    #more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
    该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。
    #more /usr/local/squid/var/logs/access.log | grep TCP_HIT
    该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。
    #more /usr/local/squid/var/logs/access.log | grep TCP_MISS
    该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户。

    g) squid -k rotate 轮换squid的日志文件/var/log/squid,Squid代理服务器日志文件
    的增长速度是惊人的,很容易点球满磁盘空间导致系统不能正常工作,甚至是死机.为了解决日志文件增长太快的问题,squid采用了"轮换"的方法.在squid.conf中可以通过logfile_rotate来设置文件轮换的个数,如:
    logfile_rotate 10 ,轮换的工作一般用crontab定时器完在周期性的日志轮换,例如每周六凌晨2:00进行日志轮换,则执行如下命令: crontab -e
    0 2 * * 6 squid -k rotate
    小贴士:Squid默认的错误提示信息为英文,对于英文不好的用户来说,实在不方便.在/etc/squid/squid.conf里添加如下:
    error_directory /usr/share/squid/errors/Simplify_Chinese 即可显示中文的错误提示

    h) #/usr/local/squid/sbin/squid -k parse
    可以根据这个测试命令用来验证squid.conf的语法和配置

    四、相关参数值

    相应于HTTP请求,下列标签可能出现在access.log文件的第四个域。

    TCP_HIT

    Squid发现请求资源的貌似新鲜的拷贝,并将其立即发送到客户端。

    TCP_MISS

    Squid没有请求资源的cache拷贝。

    TCP_REFRESH_HIT

    Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器返回304(未修改)响应,指示squid的拷贝仍旧是新鲜的。

    TCP_REF_FAIL_HIT

    Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。然而,原始服务器响应失败,或者返回的响应Squid不能理解。在此情形下,squid发送现有cache拷贝(很可能是陈旧的)到客户端。

    TCP_REFRESH_MISS

    Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器响应新的内容,指示这个cache拷贝确实是陈旧的。

    TCP_CLIENT_REFRESH_MISS

    Squid发现了请求资源的拷贝,但客户端的请求包含了Cache-Control: no-cache指令。Squid转发客户端的请求到原始服务器,强迫cache确认。

    TCP_IMS_HIT

    客户端发送确认请求,Squid发现更近来的、貌似新鲜的请求资源的拷贝。Squid发送更新的内容到客户端,而不联系原始服务器。

    TCP_SWAPFAIL_MISS

    Squid发现请求资源的有效拷贝,但从磁盘装载它失败。这时squid发送请求到原始服务器,就如同这是个cache丢失一样。

    TCP_NEGATIVE_HIT

    在对原始服务器的请求导致HTTP错误时,Squid也会cache这个响应。在短时间内对这些资源的重复请求,导致了否命中。
    negative_ttl指令控制这些错误被cache的时间数量。请注意这些错误只在内存cache,不会写往磁盘。下列HTTP状态码可能导致否定
    cache(也遵循于其他约束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503,
    504。

    TCP_MEM_HIT

    Squid在内存cache里发现请求资源的有效拷贝,并将其立即发送到客户端。注意这点并非精确的呈现了所有从内存服务的响应。例如,某些cache在内存里,但要求确认的响应,会以TCP_REFRESH_HIT, TCP_REFRESH_MISS等形式记录。

    TCP_DENIED

    因为http_access或http_reply_access规则,客户端的请求被拒绝了。注意被http_access拒绝的请求在第9域的值是NONE/-,然而被http_reply_access拒绝的请求,在相应地方有一个有效值。

    TCP_OFFLINE_HIT

    当offline_mode激活时,Squid对任何cache响应返回cache命中,而不用考虑它的新鲜程度。

    TCP_REDIRECT

    重定向程序告诉Squid产生一个HTTP重定向到新的URI(见11.1节)。正常的,Squid不会记录这些重定向。假如要这样做,必须在编译squid前,手工定义LOG_TCP_REDIRECTS预处理指令。

    NONE

    无分类的结果用于特定错误,例如无效主机名。

    相应于ICP查询,下列标签可能出现在access.log文件的第四域。

    UDP_HIT

    Squid在cache里发现请求资源的貌似新鲜的拷贝。

    UDP_MISS

    Squid没有在cache里发现请求资源的貌似新鲜的拷贝。假如同一目标通过HTTP请求,就可能是个cache丢失。请对比UDP_MISS_NOFETCH。

    UDP_MISS_NOFETCH

    跟UDP_MISS类似,不同的是这里也指示了Squid不愿去处理相应的HTTP请求。假如使用了-Y命令行选项,Squid在启动并编译其内存索引时,会返回这个标签而不是UDP_MISS。

    UDP_DENIED

    因为icp_access规则,ICP查询被拒绝。假如超过95%的到某客户端的ICP响应是UDP_DENIED,并且客户端数据库激活了(见附录A),Squid在1小时内,停止发送任何ICP响应到该客户端。若这点发生,你也可在cache.log里见到一个警告。

    UDP_INVALID

    Squid接受到无效查询(例如截断的消息、无效协议版本、URI里的空格等)。Squid发送UDP_INVALID响应到客户端。

  • 相关阅读:
    nowcoderD Xieldy And His Password
    Codeforces681D Gifts by the List
    nowcoder80D applese的生日
    Codeforces961E Tufurama
    Codeforces957 Mahmoud and Ehab and yet another xor task
    nowcoder82E 无向图中的最短距离
    nowcoder82B 区间的连续段
    Codeforces903E Swapping Characters
    Codeforces614C Peter and Snow Blower
    Codeforces614D Skills
  • 原文地址:https://www.cnblogs.com/witer666/p/1854280.html
Copyright © 2011-2022 走看看