Squid 介绍
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。使用云服务器 ECS 时,经常有这样的需求: 购买了多台 ECS 主机,但其中只有一台服务器购买了公网带宽, 而其余 ECS 因为只有偶尔的公网访问需求,所以没有购买公网带宽。可以通过配置 squid 代理,来使没有购买公网的服务器通过已购买公网的服务器访问外网,也可以通过squid作缓存减轻WEB服务器的压力,同时避免暴露WEB服务器真实的IP地址,提高安全性。
Squid 是一个缓存 Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向 Squid 发出一个申请,要 Squid 代替其进行下载,然后 Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户。
按照代理类型的不同,可以将 Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。
普通代理:需要客户机在浏览器中指定代理服务器的地址、端口。
透明代理:适用于企业的网关主机(共享接入 Internet)中,客户机不需要指定
代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的 Web 访问数据转交给代理服务程序处理。
反向代理:是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
Squid 配置说明
操作系统:CentOS Linux release 7.3.1611 (Core)
Squid 版本:squid-3.5.20-10.el7.x86_64
具体配置如下:
配置本地yum源,yum安装squid:
yum install squid –y
安装完成后开始根据不同的代理需求编辑配置文件。
普通代理:
原理图
*图中的IP地址仅为实验
1.启动squid服务
systemctl start squid
2.打开客户端浏览器设置代理服务:
注意:此处代理服务器的IP应该是与客户端和web服务器能够直接通信的IP,测试机的IP不能与WEB服务器直接通信,否则就是去了代理的意义。
3.客户端直接访问WEB服务器,此时可以实现由一台ECS服务器做squid代理,访问后端没有公网出口的WEB集群。
反向代理:
用squid做反向代理增加web服务器的安全性,同时squid可以作缓存,减轻真正的web服务器的负担,提高访问速度。
原理图:
*图中IP地址仅作参考
- 编辑squid的配置文件
vim /etc/squid/squid.conf
Squid normally listens to port 3128
http_port 80 vhost vport //指定squid代理服务器的端口为80,vhost和vport指的是采用虚拟主机的方式
cache_dir ufs /var/spool/squid 512 16 256
cache_mem 16 MB
cache_peer 39.108.15.233 parent 80 0 no-query originserver
说明:
cache_dir ufs /var/spool/squid 512 16 256
缓存目录 存储方式 缓存目录 缓存大小为512MB 一级子目录数 二级子目录数
cache_peer 39.108.15.233 parent 80 0 no-query originserver
指定真正的web服务器 类型 http端口 不支持查询邻居的缓存 允许类型weiparent的服务器作为原始服务器被访问
http_access allow all 允许所有的互联网用户访问。
2.重启squid服务
systemctl restart squid
注意:反向代理代理服务器需要使用80端口,若服务启动不起来,请查看80端口是否被占用。若占用,关闭掉对应服务,再重新启动squid服务。
3.在客户端直接输入代理服务器的ip,可以访问到真实的WEB服务器。
透明代理原理:代理服务器做一个转发器,设置端口转发规则,把访问web服务的请求,转发给web服务器,实现访问客户端对WEB服务器的访问。涉及iptables规则的设置,用途并不广泛,不在累述。