squid2.7安装与配置

CleverCode最近研究了一下squid的安装与配置。现在总结一下。分享给大家。

1 简介

代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。

Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid 可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。

1.1 工作流程

当代理服务器中有客户端需要的数据时:

a. 客户端向代理服务器发送数据请求;

b. 代理服务器检查自己的数据缓存;

c. 代理服务器在缓存中找到了用户想要的数据,取出数据;

d. 代理服务器将从缓存中取得的数据返回给客户端。

当代理服务器中没有客户端需要的数据时:

1. 客户端向代理服务器发送数据请求;

2. 代理服务器检查自己的数据缓存;

3. 代理服务器在缓存中没有找到用户想要的数据;

4. 代理服务器向Internet 上的远端服务器发送数据请求;

5. 远端服务器响应,返回相应的数据;

6. 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。

Squid代理服务器工作在TCP/IP的应用层。

1.2 Squid 分类

按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。

普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;

透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;

反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

2 系统环境

操作系统:CentOS release 6.5 (Final)

Squid版本:squid-2.7.STABLE9-20101125.tar.gz

本次安装squid软件下载地址:

http://download.csdn.net/detail/clevercode/9337437。

3 安装步骤

安装前确保进行安装Linux常备支持库,否则会出现各种错误!Linux中必备常用支持库的安装详解:http://blog.csdn.net/clevercode/article/details/45438401。

1)解压squid-2.7.STABLE9-20101125.tar.gz

# cd /usr/local/src/squid

# tar zxvf squid-2.7.STABLE9-20101125.tar.gz

2)进入解压后的目录

# cd squid-2.7.STABLE9-20101125

3)配置

# ./configure --prefix=/usr/local/squid \

--enable-gnuregex --disable-carp --enable-async-io=240 \

--with-pthreads --enable-storeio=ufs,aufs,diskd \

--disable-wccp --enable-icmp --enable-kill-parent-hack \

--enable-cachemgr-hostname=localhost \

--enable-default-err-language=Simplify_Chinese \

--with-maxfd=65535 --enable-epoll \

--enable-linux-netfilter --enable-large-cache-files \

--enable-default-hostsfile=/etc/hosts --with-dl \

--with-large-files --enable-delay-pools --enable-snmp \

--enable-arp-acl --prefix=/usr/local/squid

4) 编译

#  make

5) 安装

#  make install

6)配置用户属组 创建、初始化目录:

# groupadd  www  #添加www组

# useradd -g  www www -s /bin/false  #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统

# mkdir -p /data0/cache/logs/

# chmod 755 /data0/cache/ -R

# chown www.www /data0/cache -R

4 实际应用

4.1 普通代理服务

即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。

请参考:http://www.cnblogs.com/mchina/p/3812190.html。

4.2 透明代理服务

适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的Web访问数据转交给代理服务程序处理。

请参考:http://www.cnblogs.com/mchina/p/3812190.html。

4.3反向代理服务

为Internet用户访问企业Web站点提供缓存加速。

4.3.1 需求背景

下面实验将模拟通过不同的域名访问不同的机器,简单实现企业应用中的负载均衡。

客户端在浏览器地址栏中输入pic.domain.com,pic2.domain.com,将访问192.168.142.130这台机器,

访问res.domain.com res2.domain.com,将访问192.168.142.131这台机器。

squid服务器:192.168.142.133。

web服务器:192.168.142.130 与192.168.142.131。

4.3.2 配置squid.conf

# cd /usr/local/squid/etc/

# mv squid.conf squid.conf.bak

# vi /usr/local/squid/etc/squid.conf

#主机名
visible_hostname   static.squid-133

#设置监听的IP与端口号
http_port 80 vhost vport

#额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位)
#比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。
cache_mem 4096 MB

#设置squid磁盘缓存最大文件,超过2M的文件不保存到硬盘
maximum_object_size_in_memory 2048 KB

#使用lru表示:它只替换长时间没有被访问过的对象
memory_replacement_policy lru

#此记录文件用来记录缓冲对象的添加,删除情况(一般可设置为:cache_store_log none,
#来降低日志文件占用的磁盘空间,这一点请特别注意。)
cache_store_log none

#log文件日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

#定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
cache_dir aufs /data0/cache 20480 32 256

#关闭访问日志
access_log none

#此文件记录SQUID PROXY启动,关闭以及代理服务器系统的相关的信息包括系统活动记录
cache_log /data0/cache/logs/cache.log

#进程id保存文件
pid_filename /data0/cache/logs/squid.pid

#允许最大打开文件数量,0 无限制
max_open_disk_fds 0

#允午最小文件请求体大小
minimum_object_size 0 KB

#允午最大文件请求体大小
maximum_object_size 32768 KB

#add for gzip
server_http11 on
cache_vary on
acl nginx rep_header Server ^nginx ^fy
broken_vary_encoding allow nginx

incoming_rate 10
reload_into_ims on

acl PURGE method PURGE

#允午本机IP
acl localhost src 127.0.0.1 192.168.142.0/24

#允许localhost使用该代理
http_access allow PURGE localhost

#http_access deny PURGE

#用于确定一个页面进入cache后,它在cache中停留的时间(refresh_pattern [-i] regexp min percent max [options])
refresh_pattern -i \.swf$ 1440 50% 129600 reload-into-ims
refresh_pattern -i \.css$ 1440 50% 129600 reload-into-ims
#ignore-reload override-expire ignore-no-cache  ignore-private override-lastmod
refresh_pattern -i \.xml$ 1440 50% 129600 reload-into-ims
refresh_pattern -i \.shtml$ 1440 90% 129600 reload-into-ims
#refresh_pattern -i \.jpg$ 1440 90% 129600 ignore-reload override-expire ignore-no-cache  ignore-private override-lastmod
refresh_pattern -i \.jpg$ 1440 90% 129600  reload-into-ims
refresh_pattern -i \.png$ 1440 90% 129600 ignore-reload override-expire ignore-no-cache  ignore-private override-lastmod
#refresh_pattern -i \.png$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.gif$ 1440 90% 129600 ignore-reload override-expire ignore-no-cache  ignore-private override-lastmod
refresh_pattern -i \.bmp$ 1440 90% 129600 ignore-reload override-expire ignore-no-cache  ignore-private override-lastmod
refresh_pattern -i \.js$ 1440 90% 129600  ignore-reload override-expire ignore-no-cache  ignore-private override-lastmod
#refresh_pattern -i \.js$ 1440 90% 129600 reload-into-ims

#从客户端过来的请求,如果是 pic.domain.com,pic2.domain.com则Squid向 Server 192.168.142.130的端口80发送请求;
cache_peer 192.168.142.130 parent 80 0 no-query no-digest originserver  name=pic
cache_peer_domain pic pic.domain.com pic2.domain.com

#从客户端过来的请求,如果是 res.domain.com,res2.domain.com则Squid向 Server 192.168.142.131的端口80发送请求;
cache_peer 192.168.142.131 parent 80 0 no-query no-digest originserver  name=res
cache_peer_domain res res.domain.com res2.domain.com

#允许所有IP访问
acl all src 0.0.0.0/0.0.0.0
http_access allow all

#允许所有的http报头
header_access Via deny all

#此标记设置snmp_port端口为3401,可以使MRTG监测服务运行状态
acl CactiServer src 192.168.142.93
acl SNMP snmp_community [email protected]
snmp_port 3401
snmp_access allow SNMP CactiServer
snmp_access deny all

#上面几个就是说遇到URL中有包含cgi-bin和以avi等结尾的都不要缓存,
acl QUERY urlpath_regex cgi-bin .cgi$ .avi$ .wmv$ .rm$ .ram$ .mpg$ .mpeg$ .zip$ .exe$
cache deny QUERY 

#acl PURGE method PURGE
#acl localhost src 172.16.218.0/32
#http_access allow PURGE localhost
#带问号的不缓存
refresh_pattern \? 0 100% 0 ignore-reload
#5h
refresh_pattern \.php\?keyword 240 50% 720
refresh_pattern \.php\?housetag 3 50% 6
refresh_pattern \.html 5 50% 30

#以root来启动squid,并且没有增加cache_effective_user行,那么squid默认以nobody用户运行
cache_effective_user www
cache_effective_group www

4.3.3 初始化配置

# /usr/local/squid/sbin/squid -z

看到以下提示初始化正常。

2015/12/08 04:03:34| Creating Swap Directories

4.3.4 启动

# 后台启动

# /usr/local/squid/sbin/squid -s

4.3.5 访问

1)通过访问http://res.domain.com/comm.js。可以到看到res.domain.com是指向了192.168.142.133。但是实际取出js文件是从192.168.142.131服务器中取得。

2)修改comm.js 成为如下内容。但是发现访问comm.js内容还是没有变。

#vi comm.js

this is from 192.168.142.131 js! i am change !

3)清除133缓存,再访问数据就变了。

# /usr/local/squid/bin/squidclient -m PURGE -p 80 "http://res.domain.com/comm.js"

4)改变URL也会是数据变化。squid缓存的key可以理解为url的md5。只要url发生了变化,那么数据就会发生编号。

如图访问:http://res.domain.com/comm.js?r=123456。

5 )访问图片

5 squid常用管理命令

# /usr/local/squid/sbin/squid -z 初始化缓存空间

# /usr/local/squid/sbin/squid   前台启动 (用于输出调试)

# /usr/local/squid/sbin/squid -s 后台启动

# /usr/local/squid/sbin/squid -k shutdown   停止

# /usr/local/squid/sbin/squid -k reconfigure  重新载入配置文件

# /usr/local/squid/sbin/squid -k parse       检查conf

# /usr/local/squid/sbin/squid -k rotate  优化碎片

# /usr/local/squid/bin/squidclient -p 80 mgr:info                          查看squid命中情况

# /usr/local/squid/bin/squidclient -m PURGE -p 80 "http://res.domain.com/comm.js"  删除指定URL缓存

时间: 2024-12-08 19:44:36

squid2.7安装与配置的相关文章

CentOS 6.4下Squid代理服务器的安装与配置

一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快.Squid 可以代理HTTP.FTP.GOPH

squid代理服务器的安装和配置

CentOS 6.4下Squid代理服务器的安装与配置 一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速

Windows下MySQL下载安装、配置与使用

用过MySQL之后,不论容量的话,发现比其他两个(sql server .oracle)好用的多,一下子就喜欢上了.下面给那些还不知道怎么弄的童鞋们写下具体的方法步骤. (我这个写得有点太详细了,甚至有些繁琐,有很多步骤在其他的教程文档里都是省略掉的,但我还是要写出来,因为我当时走了很多弯路,我希望你们能够避免我走的这些弯路.当然,知道同学的可以略过,选择你想知道的地方看) 第一大步:下载.(不需要注册也可以下载,直接点下面的no thanks) a.俗话说:“巧妇难为无米之炊”嘛!我这里用的是

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

redis的单机安装与配置以及生产环境启动方案

简单介绍一下redis的单机安装与配置,方便自己记录安装步骤的同时方便他人获取知识. 首先,从官网下载最新版的(稳定版)的redis安装包.官网地址如下:https://redis.io/download 下载源码包后,redis需要编译安装.需要安装gcc和tcl,gcc用于编译tcl用于测试. 使用命令安装gcc,yum install gcc,一路选择yes,gcc就可以安装成功. 接下来安装tcl,首先获取tcl源码包(见百度云盘)或者使用命令:wget http://downloads

Tomcat安装与配置

进行Tomcat的安装与配置,得要jdk的支持,jdk的安装与配置就不说了,毕竟学Java第一步就是这个,所以以下步骤是已有jdk的情况下进行的 首先进入Tomcat的官网http://tomcat.apache.org/,会出现左侧Download一栏,选择自己需要的Tomcat版本,这里我选择的是Tomcat 7 点击进入后到达如下界面,选择自己所对应的系统下载对应的zip包(个人感觉下载zip包简介一点,当然也可以下载可执行文件) 注意下载到哪个地方,下载完成后得到压缩包 对此压缩包进行解

MongoDB 3.2 在CentOS 上的安装和配置

MongoDB 3.2 在CentOS 上的安装和配置 2016-01-06 14:41:41 发布 您的评价:       0.0   收藏     0收藏 一.安装 编辑/etc/yum.repos.d/mongodb-org-3.2.repo [mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpg

Keepalived安装与配置

一.简介 Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能,负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs),而高可用是通过VRRP协议实现多台机器之间的故障转移服务. 上图是Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space

Linux下Nagios的安装与配置[转]

一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知. Nagios原名为NetSaint,由Ethan Galstad开发并维护至今.NAGIOS是一个缩写形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻译为圣徒