squid3.4编译安装

squid反向代理工作原理:
squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性、安全性方面有很好用途。作者在具体实验环境下,利用 DNS 轮询和 Squid 反向代理技术,实现了网站的负载均衡,从而提高了网站可用性和可靠性。
现在有许多大型的门户网站如 SINA 都采用 squid 反向代理技术来加速网站的访问速度,可将不同的 URL 请求分发到后台不同的 WEB 服务器上,同时互联网用户只能看到反向代理服务器的地址,加强了网站的访问安全。


squid安装:

系统为centos5.8

安装依赖包:yum install -y gcc gcc-c++ make perl perl-devel

解压文件:tar zxvf squid-3.4.2-20140112-r13074.tar

安装: ./configure --prefix=/usr/local/squid

      make && make install

建立squid用户和组:groupadd squid   #建立用户
                  useradd -g squid -s /sbin/nologin squid  #建立组并把用户添加到组 但不能登陆系统

添加squid用户和组到指定文件夹权限:
          chown -R squid /usr/local/squid/var/logs/ /usr/local/squid/var/cache/    
            #squid需要用户有权访问var/logs和var/cache两个文件夹

配置squid.conf:
           cache_effective_user squid   #使用squid用户启动squid

           cache_effective_group squid  #使用squid组启动squid  

     注:如使用root启动squid为--cache_effective_user nobody  不能添加squid组、用户和文件夹权限
                                cache_effective_group nobody

设定 squid 的主机名:
           visible_hostname 本机IP地址   #如无此项 squid 将无法启动

设定squid监听端口:
        http_port 80 accel vhost vport  
          #这是客户访问网站的端口,最好设置为80,否则客户访问需要添加端口号;
          #vport指的是基于IP地址和基于端口的
          #vhost指的是所采用的虚拟主机的方式,必须要加.否则将无法将主机头转发  至后端服务器,访问时就会出现无法找到主机头的错误
          #accel为加速模式

定义不同的父节点:
        cache_peer 种子机的ip地址 parent 80  0 no-query originserver name=种子机的名称
          #no-query originserver 参数指明是源服务器
          #parent表示源服务器端口
          #如需要轮询服务器同步数据,可添加round-robin

指定缓存文件路径:
          cache_dir ufs /data/cache 33216 32 256
          cache_dir ufs /data/cache1 33216 32 256

设置acl规则:
        acl all src 0.0.0.0/0.0.0.0
        http_access allow all
        # 允许所有用户访问

设置日志文件:
       logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
       access_log /usr/local/squid3.4/var/logs/access.log
       pid_filename /usr/local/squid3.4/var/logs/squid.pid
       cache_log /usr/local/squid3.4/var/logs/cache.log

对 squid 的一些优化:
     maximum_object_size 10240 KB          ### 能缓存的最大对象为 10M
     maximum_object_size_in_memory 512 KB  ### 内存中缓存的最大对象 512K
     cache_mem 256 MB                      ###squid 用于缓存的内存量,最后进行保存
     quick_abort_min -1 KB
     refresh_pattern -i \.jpg$   3    20%     25     reload-into-ims
     refresh_pattern -i \.xml$   3    20%     15     reload-into-ims
     request_timeout 30 seconds
     logfile_rotate 7

     # Leave coredumps in the first cache dir
       coredump_dir /usr/local/squid/var/cache/squid

     # Add any of your own refresh_pattern entries above these.
       refresh_pattern ^ftp:           1440    20%     10080
       refresh_pattern ^gopher:        1440    0%      1440
       refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
       refresh_pattern .               0       20%     4320


检查squid配置文件是否正确:/usr/local/squid/sbin/squid –k parse
生成缓存目录:/usr/local/squid/sbin/squid –N -z -d 1
启动squid:/usr/local/squid/sbin/squid
停止squid:/usr/local/squid/sbin/squid -k shutdown


参考文件: /usr/local/squid/etc  squid.conf.documented  #配置信息

-------------------------------------------------------------------------------------------------------------------
常用的squidclient查询语句如下(/usr/local/squid/bin):

       #这里-p后面的是端口,根据自己具体的情况而定。如果是3128端口,就把上面的80换成3128就可以了
  squidclient -p 80 mgr:info      #取得squid运行状态信息:

  squidclient -p 80 mgr:mem     #取得squid内存使用情况:

  squidclient -p 80 mgr:objects #取得squid已经缓存的列表,使用时要小心,可能会造成squid崩溃:

  squidclient -p 80 mgr:diskd  #取得squid的磁盘使用情况:

  squidclient -p 80-m PURGE http://www.gznet.com  #强制更新某个url,即清理某连接的squid

--------------------------------------------------------------------------------------------------------------------  
参考文章:http://fuquanjun.blog.51cto.com/5820068/1339465
         http://www.doc88.com/p-681406154785.html
         http://www.52-life.net/N_Windows_squid.htm
         http://www.squid-cache.org/Versions/v2/2.6/cfgman/


如发现问题,请留言指正,感谢阅读!!