squid 代理缓存服务器

Squid cache(简称为Squid)是一个流行的自由软件,它符合GNU通用公共许可证。Squid作为网页服务器的前置cache服务器,可以代理用户向web服务器请求数据并进行缓存,也可以用在局域网中,使局域网用户通过代理上网。Squid主要设计用于在Linux一类系统运行

代理服务器原理

代理服务器接受到请求后,首先与访问控制列表中的访问规则相对照,如果满足规则,则在缓存中查找是否存在需要的信息。

对于Web用户来说,Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率。Squid不仅支持HTTP协议,还支持FTPgopherSSLWAIS等协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求

目前国内众多CDN厂商都是使用软件技术—Squid也就是代理服务器的方式实现,其本身成本比较低、配置方便灵活.其内容服务模式是基于缓存服务器,也叫做代理缓存.主要的技术是网络负载均衡(多个squid代理服务器)、动态内容分发复制和缓存技术,简单的说当一个用户访问已经加入CDN服务(squid代理)的网站时,用户的请求并不直接发送到后端web服务器,而是发送到squid服务器(CDN中称节点),squid再根据本地的DNS记录向后端的目标web服务器发送请求,请求有响应并返回数据时squid会先将数据缓存一份到本地服务器上,然后返回结果给用户,当下一位客户访问相同的内容时直接从squid上返回结果而不经过后端web服务器,从而节约网站带宽,加速客户访问速度

工作层次  :应用层

正向代理 3128 8080    反向代理  80

优点:安全性高

缺点:支持应用少

日志标志分析

配置

Squid中策略实现


  1. 先定义策略元素
  2. 定义策略,引用策略元素

首先用acl定义策略元素

定义策略,引用策略元素

可根据自己的需求添加,

更多的策略,当然更为详细的可以到官网上查看,这里只是一部分

acl aclname src ip-address/mask ...          
    # clients IP address [fast]        
acl aclname src addr1-addr2/mask ...     
    # range of addresses [fast]
acl aclname dst [-n] ip-address/mask ... 
    # URL host‘s IP address [slow]
acl aclname localip ip-address/mask ... 
    # IP address the client connected to [fast]
acl aclname arp  mac-address ..(xx:xx:xx:xx:xx:xx notation)
acl aclname srcdomain   .foo.com ...
    # reverse lookup, from client IP [slow]                              
acl aclname dstdomain [-n] .foo.com ... 
    # Destination server from URL [fast]
acl aclname srcdom_regex [-i] \.foo\.com ...
    # regex matching client name [slow]
acl aclname dstdom_regex [-n] [-i] \.foo\.com ...
    # regex matching server [fast]
acl aclname time [day-abbrevs] [h1:m1-h2:m2]
    # [fast]
    #  day-abbrevs:
    #  S - Sunday
    #  M - Monday
    #  T - Tuesday
    #  W - Wednesday
    #  H - Thursday
    #  F - Friday
    #  A - Saturday
   -i  ^http://.*\.com.*
acl aclname url_regex [-i] ^http:// ...
    # regex matching on whole URL [fast]
acl aclname urllogin [-i] [^a-zA-Z0-9] ...
    # regex matching on URL login field
acl aclname urlpath_regex [-i] \.gif$ ...
    # regex matching on URL path [fast]
acl aclname rep_mime_type [-i] mime-type ...
    # regex match against the mime type of the reply received by
    # squid. Can be used to detect file download or some
    # types HTTP tunneling requests. [fast]
    # NOTE: This has no effect in http_access rules. It only has
    # effect in rules that affect the reply data stream such as
    # http_reply_access.

账号验证

只需要在配置文件中添加语句

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd  **定义账号库
auth_param basic children 5
auth_param basic credentialsttl 2 hours
auth_param basic realm Example.com‘s Squid proxy-caching
acl auth_user proxy_auth REQUIRED
http_access allow auth_user

注释:
第一行:选择的认证方式为basic,认证程序路径和密码文件路径。
第二行:认证程序的进程数
第三行:认证有效时间
第四行:认证领域内容,上面定义的web浏览需要输入用户密码
第五,六行:设置允许认证的用户访问

产生账号及密码

在第一行中的 /etc/squid/passwd 文件可以使用下面方法生成,在装有apache的机器上运行 光盘上生成账号的包httpd-tools

生成密码文件

在第一行中的 /etc/squid/passwd 文件可以使用下面方法生成,在装有apache的机器上运行

htpasswd -c /etc/squid/passwd auth_user     **第一次产生需要加- c

透明代理

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的request fields(报文),并会传送真实IP,多用于路由器的NAT转发中。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理

非透明代理,内部网络中主机可以不配置网关和dns,

Squid 的透明代理,

由于dns过不去代理,所以让dns数据走net,方法可以利用netfilter /iptables 框架实现。

虽然画的图很丑,但是至少能说明原理吧。

*******的线是网络数据,走代理

****蓝线dns数据,走net

配置步骤:

  1. 打开路由功能
    /etc/sysctl.conf  
    net.ipv4.ip_forward = 1
    sysctl -p
         2.dns请求,使用nat转换
         iptables  -t nat   -A POSTROUTING  -p udp --dport  53 -o eth1  -j MASQUERADE
         3.实现http端口的重定向
         iptables   -t nat  -A PREROUTING   -i eth0  -p tcp --dport 80 -j REDIRECT  --to-port 3128
    客户端应用{如浏览器}不需要配置代理的地址以及端口,网卡需要配置dns指向以及网关

CDN网络中squid的应用

当用户访问web服务器时,实际上被dns解析到缓存服务器上,当所访问的数据缓存服务器上没有时,它将会向自己的兄弟服务器发出请求查询,如果兄弟也没有,就向他的父服务器发出查询请求,父服务器没有,在向web查询,查询到的结果,父服务器缓存并发送给要查询的子服务器,子服务器缓存并发送给用户,这样当用户下一次再来访问时,就可以直接从缓存中提取,发送了

Cache1

Cache2

添加基本的配置(内存缓存、硬盘缓存目录及大小、出错页面显示的信息)

改变服务器端口(因为当客户访问时默认80)

Cache3

Web

编辑页面,文本内容“hello”,创建物理目录kk

测试:

访问物理目录

查看缓存目录和文件

[[email protected] ~]# ll /var/spool/squid/00/00
total 16
-rw-r-----. 1 squid squid 631 Sep  7 23:57 00000000
-rw-r-----. 1 squid squid 628 Sep  7 23:58 00000001
-rw-r-----. 1 squid squid 489 Sep  7 23:25 00000002
-rw-r-----. 1 squid squid 483 Sep  7 23:26 00000003
[[email protected] ~]#

缓存的页面内容

此时 cache1 和 父服务器也都有了缓存

Cache1 日志分析

[email protected] ~]# tail -f /var/log/squid/access.log
1441639530.966     49 192.168.3.1 TCP_MISS/200 491 GET http://192.168.3.101/kk/ - TIMEOUT_DEFAULT_PARENT/192.168.3.102 text/html
1441639531.001      8 192.168.3.1 TCP_MISS/404 1653 GET http://192.168.3.101/favicon.ico - FIRST_PARENT_MISS/192.168.3.102 text/html
1441639537.437     11 192.168.3.1 TCP_MISS/200 488 GET http://192.168.3.101/ - FIRST_PARENT_MISS/192.168.3.102 text/html
1441639556.676      0 192.168.3.100 UDP_MISS/000 53 ICP_QUERY http://192.168.3.100/favicon.ico - NONE/- -
1441639563.911      0 192.168.3.100 UDP_MISS/000 42 ICP_QUERY http://192.168.3.100/ - NONE/- -
1441639571.232      0 192.168.3.100 UDP_MISS/000 53 ICP_QUERY http://192.168.3.100/favicon.ico - NONE/- -
1441641459.887      0 192.168.3.100 UDP_MISS/000 53 ICP_QUERY http://192.168.3.100/favicon.ico - NONE/- -
1441641459.893      0 192.168.3.100 TCP_MEM_HIT/200 522 GET http://cache1/squid-internal-periodic/store_digest - NONE/- application/cache-digest
1441641461.290      0 192.168.3.100 UDP_MISS/000 44 ICP_QUERY http://192.168.3.100/kk - NONE/- -
1441641461.693      0 192.168.3.100 UDP_MISS/000 53 ICP_QUERY http://192.168.3.100/favicon.ico - NONE/- -

http://www.chnlanker.com/web-server/3760.html

时间: 2024-08-13 01:18:40

squid 代理缓存服务器的相关文章

Linux下squid代理缓存服务环境部署

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

squid代理缓存

Squid代理缓存Squid源码安装:tar xf squid-3.5.27.tar.gz //包要自己传或下载yum -y install \gcc \gcc-c++ \make \pcre-devel \expat-devel \perlyum install perl-develcd /squid-3.5.27/./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-arp-acl --enable-linux-ne

nginx反向代理缓存服务器的构建

Nginx反向代理缓存服务器构建 一:代理服务可简单的分为正向代理和反向代理: 正向代理:用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理:与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就

Varnish反向代理缓存服务器

缓存及加速 高性能缓存服务器1.1 Varnish概述一款高性能.开源的反向代理服务器和缓存服务器(一台varnish可以抵6台Squid)Varnish使用内存做为缓存设备(纯内存缓存服务器方案),相对于Squid(采用硬盘缓存),拥有更快的缓存速度(varnish内存管理完全交给内核,但当缓存内容超过阈值时,内核会自动将一部分缓存存入swap中,让出内存) 1.Varnish进程 varnish主要运行两个进程:Management 进程和Child进程(也称为Cache进程)Managem

Nginx构建反向代理缓存服务器

防伪码:曾经沧海难为水,除却巫山不是云. 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端:  反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提

Nginx反向代理缓存服务器搭建

Nginx反向代理 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理.

linux-centos7-nginx-反向代理缓存服务器搭建

代理服务器分正向代理,反向代理 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理. 反向代理服务器接受来自Int

nginx反向代理缓存服务器构建

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网

nginx 反向代理缓存服务器构建

代理服务可简单的分为正向代理和反向代理:   正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理. 反向代理服务器