Squid 缓存服务器的缓存代理,及配置 Squid 的ACL访问控制策略

Squid缓存服务器

Squid 是 Linux 系统中最常见的一块开源代理服务软件(官方网站为 http://www.squid-cache.org ),可以很好地实现HTTP、FTP、DNS、查询,以及SSL等应用的缓存代理,功能十分强大。

缓存代理概述

作为应用层的代理服务软件,Squid 主要提供缓存加速和应用层过滤控制的功能。

  • 代理的工作机制

    当客户机通过代理来请求 Web 页面时,指定的代理服务器辉县检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机;如果缓存中没有客户机需要访问的页面,则由代理服务器想 Internet 发送访问请求,获得返回的 Web 页面以后,将网页数据保存到缓存中并发送给客户机。
     
    HTTP 代理的缓存加速对象主要是文字、图像等静态 Web 元素。使用缓存机制后,当客户及在不同的时候访问统一 Web 元素,或者不同的客户机访问相同的 Web 元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了像 Internet 重复提交 Web 请求的过程,提高了客户机的 Web 响应速度。
     
    由于客户机的 Web 访问请求实际上是由代理服务器代替完成的,从而可以隐藏用户的真实 IP 地址,起到一定的保护作用。另一方面,代理服务器担任着类似“经纪人”的角色,所以有机会针对要访问的目标、客户机的地址,访问的时间段等进行过滤控制。

  • 代理的基本类型
    根据实现的方式不同,代理服务可分为传统代理、透明代理以及反向代理三种代理服务。
  • 传统代理:

    首先必须在客户机的浏览器、QQ聊天工具、下载软件等程序手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析也会发送给指定的代理服务器。

  • 透明代理:

    提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将 Web 访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机来说是“透明”的,用户甚至不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给 DNS 服务器。

  • 反向代理:

    通过 squid 反向代理可以加速网站的访问速度,可将不同的 URL 请求分发到后台不同的 Web 服务器上,同时互联网用户只能看到反向代理服务器的地址,加强了网站的访问安全。

系统环境

主机 操作系统 IP地址 所用软件
Squid代理服务器 CentOS 7.4 x86_64 192.168.100.135 squid.x86_64 7:3.5.20-10.el7
Win10 客户机 windows 10 192.168.100.10 Internet Explorer 11

 

部署服务

 

一、传统代理模式

1. 安装squid软件包

yum -y install squid

2. 开启squid服务

systemctl enable squid.service
systemctl start squid.service

3. 查看启动进程信息

# netstat -tunlp | grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      7374/(squid-1)
udp        0      0 0.0.0.0:33427           0.0.0.0:*                           7374/(squid-1)
udp6       0      0 :::38585                :::*                                7374/(squid-1)      

4. 为客户机设置代理(IP:3128)

  • 在IE浏览器中,选择“工具”→“Internet选项”,在“连接”选项卡中点击“局域网设置”按钮,填写代理服务器IP与端口信息。
     
  • 若要在 Linux 客户机的命令行界面中使用代理服务器,不许通过环境变量来指定代理服务器的地址、端口等信息。
    # vim /etc/profile
    HTTP_PROXY=http://192.168.100.135:3128  //为使用HTTP协议指定代理
    HTTPS_PROXY=http://192.168.100.135:3128  //为使用HTTPS协议指定代理
    FTP_PROXY=http://192.168.100.135:3128  //为使用FTP协议指定代理
    NO_PROXY=192.168.1.,192.168.4.  //对两个局域网段不使用代理
    export HTTP_PROXY HTTPS_PROXY FTP_PROXY NO_PROXY
    # source /etc/profile

 

二、透明代理模式

1. 通过SNAT技术完成数据的转发,让客户机将数据交给Squid代理服务器,再由其转发到外网中

//清空防火墙规则
iptables -F
iptables -t nat -F
 
//开启dns服务允许通过外网口
iptables -t nat -A POSTROUTING -p udp --dport 53 -o ens32 -j MASQUERADE
 
//开启路由转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
 
//立即生效
sysctl -p

2. 编辑squid配置文件

# vim /etc/squid/squid.conf
http_port 3128 transparent
cache_dir ufs /var/spool/squid 100 16 256

3. 检查配置文件,初始化并重启squid服务

squid -k parse  //检查配置文件
squid -z    //初始化
systemctl restart squid.service

4. 添加防火墙规则

//将内网用户对80端口的访问都转发到本机3128端口上
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
 
//将内网用户对80端口的访问都转发到本机3128端口上
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
 
//保存防火墙规则
service iptables save

三、反向代理模式

1. 编辑squid配置文件,添加以下规则

# vim /etc/squid.conf
http_port IP:80 vhost
cache_peer 网站源服务器IP parent 80 0 originserver

2. 重启squid服务

systemctl restart squid

3. 自定义错误页面

# 错误页面默认在/usr/share/squid/errors/zh-cn/目录下
# 修改logo为公司logo ,/etc/squid/errorpage.css
# vim /etc/squid/errorpage.css

/* Page displayed title area */
#titles {
        margin-left: 15px;
        padding: 10px;
        padding-left: 100px;

        //ur(‘‘) 指向地址,替换为公司的logo路径地址即可
        background: url(‘/squid-internal-static/icons/SN.png‘) no-repeat left;
}

4. 修改系统管理员邮箱

# vim /etc/squid/squid.conf
//主机名
visible_hostname squid.njxx.com
 
//管理员邮箱信息
cache_mgr [email protected]

ACL访问控制

  • Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等条件进行过滤。
  • 在配置文件squid.conf中,ACL访问控制通过以下两个步骤来实现:其一,使用acl配置项定义需要控制的条件;其二,通过http_access 配置对已定义的列表做出"允许" 或者 "拒绝" 访问的控制。
  • 定义访问控制列表
    acl 列表名称 列表类型 列表内容 …
  • 常见的访问控制列表类型
列表类型 含义/用途
src 源IP地址、网段、IP地址范围
dst 目标IP地址、网段、主机名
port 目标端口
dstdomain 目标域,匹配域内的所有站点
time 使用代理服务的时间段,用字母表示一星期中各天的英文缩写
maxconn 每个客户机的并发连接数
url_regex 目标资源的URL地址,-i表示忽略大小写
urlpath_regex 目标资源的整个URL路径,-i表示忽略大小写

原文地址:http://blog.51cto.com/13625676/2157383

时间: 2024-10-28 17:38:53

Squid 缓存服务器的缓存代理,及配置 Squid 的ACL访问控制策略的相关文章

【实战】Squid 缓存服务器 之 传统代理 + 透明代理

目录: 1· Squid代理的概述原理2· 代理的基本类型3· Squid 服务脚本4· 构建代理服务器(传统代理.透明代理)5· 总结 Squid代理的概述原理 1)代理的工作机制 1.什么是 Squid ? Squid是一个高性能的代理缓存服务器,Squid支持FTP.gopher.HTTPS和HTTP协议.和一般的代理缓存软件不同,Squid用一个单独的.非模块化的.I/O驱动的进程来处理所有的客户端请求. 2·缓存的工作原理 squid 是工作在应用层的代理服务软件,squid 主要提供

【转】Nginx服务器的反向代理proxy_pass配置方法讲解

[转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的,如: location ~ /* { proxy_pass http://127.0.0.1:8008; } 或者可以 location / { proxy_pass http://127.0.0.1:8008; } Apache2的反向代理的配置是: ProxyPass /ysz/ http://

Linux dns缓存服务器及正反向区域配置

dns缓存服务器 实验机器ip 192.168.1.202 首先 : 1. yum install bind bind-libs bind-utils -y   下载包安装 2. cp /etc/named.conf  /etc/named.conf.bak  拷贝一份配置文件 3. vim named.conf  进入配置文件 (红框内是需要添加的或者修改的地方) 然后保存退出 即可. 正向区域解析: vim /etc/named.rfc1912.zones  进入文件添加下面几项 2. 在/

阿里云服务器ECS Apache、Nginx 配置支持跨域访问

问题描述 如何让 Apache.Nginx支持跨域访问. 处理办法 配置 Apache 跨域访问 步骤: 修改 httpd.conf. 把 LoadModule headers_module modules/mod_headers.so 前面的注释删除 修改  改为:  即: AllowOverride none Require all granted Header set Access-Control-Allow-Origin * 说明: 首先使用图形界面开启headers_module模块功

利用Squid反向代理搭建CDN缓存服务器加快Web访问速度

2011年11月26日 ? Web服务器架构 ? 评论数 2 案例:Web服务器:域名www.abc.com IP:192.168.21.129 电信单线路接入访问用户:电信宽带用户.移动宽带用户出现问题:电信用户打开www.abc.com正常,移动用户打开www.abc.com很慢,甚至打不开解决方案:在移动机房放置一台CDN代理服务器,通过智能DNS解析,让电信用户直接访问Web服务器.让移动用户访问CDN代理服务器,解决移动用户访问Web服务器慢的问题具体操作:CDN代理服务器:系统:Ce

m2014-architecture-imgserver->利用Squid反向代理搭建CDN缓存服务器加快Web访问速度

案例:Web服务器:域名www.abc.com IP:192.168.21.129 电信单线路接入访问用户:电信宽带用户.移动宽带用户出现问题:电信用户打开www.abc.com正常,移动用户打开www.abc.com很慢,甚至打不开解决方案:在移动机房放置一台CDN代理服务器,通过智能DNS解析,让电信用户直接访问Web服务器.让移动用户访问CDN代理服务器,解决移动用户访问Web服务器慢的问题具体操作:CDN代理服务器:系统:CentOS 5.5 主机名:cdn.abc.com IP:192

Varnish反向代理缓存服务器

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

Varnish高性能缓存服务器

一.Varnish概述 一款高性能.开源的HTTP反向代理服务器和缓存服务器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好. Varnish使用内存做为缓存设备(纯内存缓存服务器方案),相对于Squid(采用硬盘缓存),拥有更快的缓存速度(varnish内存管理完全交给内核,但当缓存内容超过阈值时,内核会自动将一部分缓存存入swap中,让出内存) 1.Varnish进程 Varnish与一般服务器软件类似,分为master(ma

nginx反代varnish缓存服务器实现后端amp动静分离架构

1.前端nginx做调度器及反代服务器,将用户的请求调度至后端的两台varnish,缓存调度算法使用一致性hash算法保证缓存命中率: 2.两台varnish反向代理用户请求至三个(组)后端主机,分别为存储静态资源(htm,html,css,js),应用程序服务器(可以部署wordpress或Discuz!),图片统一保存至图片服务器: 3.用户登录后,可以通过wordpress发布新的博文,并且可以上传图片: 4.如果后端主机全部宕机,varnish可以使用过期缓存响应客户端: