Squid 将访问页面的结果缓存在硬盘和内存上。因此,Squid 对硬盘和内存的空间大小有很高的要求。内存和硬盘越大,缓存命中率越高。但是,真实的服务器数据是实时更新的,因此我们需要不时清空缓存数据,以保证用户访问结果的准确性。
鱿鱼代理服务器原理
鱿鱼原理:客户端访问鱿鱼代理服务器,代理服务器
代表客户端访问后端服务器,后端服务器将响应数据返回给 Squid 代理服务器。最后,Squid 代理服务器将响应结果返回给客户端,同时将结果缓存在硬盘和内存中,当客户端再次访问同一网页时,代理服务器将响应结果直接返回给客户端。
安装 Squid 服务
这
RHEL7系统的安装光盘附带Squid的RPM软件包。
复制
鱿鱼服务器:
常见代理服务器类型代理服务器
的类型很多,一般分为标准正向代理服务器、透明代理服务器和反向代理服务器。
转发代理服务器主要用于在内部网络想要访问外部网络时缓存页面数据。由于公共IP地址的稀缺性,企业内部的数百台计算机不可能同时连接到公司,目前的解决方案是通过统一的网络接口连接。鱿鱼可以提供这样的接口。所有客户端都通过设置代理服务器连接值 Squid 通过代理访问互联网。在这种模式下,Squid 主要负责提供缓存加速服务和访问控制功能。转发代理是对用户的操作。
透明代理类似于传统的前向代理
,但传统的转发代理要求每个客户端设置代理服务器。透明代理通过网关部署。也就是说,所有设置都由网关服务器和代理服务器上的管理员进行。因此,透明代理对用户是透明的,不需要用户进行任何设置。
反向代理与智能 DNS 相结合可以实现基本的 CDN 框架。通过DNS分离解析功能,对于不同地域的DNS请求,可以向客户端返回不同的结果。当用户访问时,他们不会觉得自己正在访问代理服务器。由于使用了缓存技术,Squid 还可以在大并发到达时更快地将响应结果返回给用户。反向代理结构如下图所示。
配置文件解析
安装 Squid 包后,默认配置文件为 /etc/squid/squid.conf。Squid 支持的功能非常丰富,配置语句也很多。下表显示了 Squid 的主要配置语句和说明。
反向代理案例
案例要求
通过配置代理服务器,可以实现以下目标:
代理服务器可以使用本地代理服务器端口缓存远程 Web 服务器的页面
设置为端口 80 用户可以通过访问代理服务器获取远程 Web 服务器上的页面内容远程 Web 服务器对客户端用户透明,采用缓存机制提高网站的响应速度
场景
使用三个RHEL7虚拟机,其中一个用作Squid代理服务器,用于连接两个网段,因此需要配置两个网卡,地址分别为192.168.4.5和192.168.2.5。一个是 IP 地址为 192.168.4.100 的客户端测试主机。地址为 192.168.2.100 的 Web 服务器,为其他代理提供 Web 数据源,如下图所示。
实施步骤
步骤 1:在主机 192.168.2.100 上构建 Web 服务器
[root@cc ~]# yum -y install httpd-2.4.6-40.el7.x86_64 //安装http软件包[root@cc ~]# systemctl restart httpd //重启httpd系统服务 [root@cc ~]# echo “Welcome to www.cc.com” > /var/www/html/index.html //搭建主页 [root@cc ~]# netstat -antup | grep 80 //查看80端口是否是http服务监听 tcp6 0 0 :::80 :::* LISTEN 1438/httpd
复制
步骤 2:部署 Squid 代理服务器
[root@cc ~]# yum -y install squid.x86_64 7:3.3.8-26.el7 //安装squid软件包复制
[root@cc ~]# vim /etc/squid/squid.conf ….. http_port 80 vhost //设置反向代理 visiable_hostname www.cc.com //设置主机名http_access allow all //允许本机所有主机使用代理服务器 cache_peer 192.168.2.100 parent 80 0 originserver //定义后台真实服务器信息 cache_dir ufs /var/spool/squid 100 16 256 //定义硬盘缓存路径,总容量,一级目录个数和二级目录个数 cache_mem 128 MB //定义内存缓存大小,注意128和MB之间有空格 …..
复制
[root@cc ~]# systemctl restart squid [root@cc ~]# netstat -antup | grep 80 tcp6 0 0 :::80 :::* LISTEN 12441/(squid-1) //确定80端口为squid服务监听状态复制
步骤 3:在客户端上测试 SQUID 代理服务器结果
[root@cc ~]# vim /etc/hosts ….. 192.168.4.5 www.cc.com …..
复制
[root@cc ~]# curl http://www.cc.com Welcome to www.cc.com复制
[root@cc ~]# curl -I http://www.cc.com HTTP/1.1 200 OK Date: Tue, 18 Apr 2017 08:27:06 GMT Server: Apache/2.4.6 (Red Hat Enterprise Linux) PHP/5.4.16Last-Modified: Thu, 06 Apr 2017 11:31:26 GMT ETag: “2-54c7dd9765860” Accept-Ranges: bytes Content-Length: 2 Content-Type: text/html; charset=UTF-8 Age: 168943 Warning: 113 www.cc.com (squid/3.3.8) This cache hit is still fresh and more than 1 day old X-Cache: HIT from www.cc.com X-Cache-Lookup: HIT from www.cc.com:80 Via: 1.1 www.cc.com (squid/3.3.8) Connection: keep-alive
复制
修改配置文件时,请注意不要更改错误的位置。否则,如果配置文件中没有错误,则在启动 squid 服务时在线代理服务器,squid 服务将无法启动。但是,如果服务仍然无法启动,请检查端口 80 是否被其他服务占用。
[root@cc ~]# netstat -antup | grep 80复制