什么是Squid
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。
本地服务器 ——访问—>squid服务器——访问——>远程服务器
本地服务器 ——访问—>squid服务器<——缓存——远程服务器
正向代理
正向代理 Squid被数以百计的网络提供商用来为他们的用户提供最好的网页访问,为了提升性能和常用内容来减少带宽squid充分利用客户端和服务端的数据流。Squid还能路由内容请求到服务器,以各种方式构建缓存服务器多层次结构,优化网络吞吐量。
1.配置
以下操作在真机中进行
[root@foundation60 ~]# yum install squid -y ##下载squid服务
[root@foundation60 ~]# systemctl start squid ##开启squid
[root@foundation60 ~]# netstat -antlpe | grep squid ##查看squid端口
tcp6 0 0 :::3128 :::* LISTEN 0 157781 15783/(squid-1)
[root@foundation60 ~]# vim /etc/squid/squid.conf ##编辑配置文件
设定禁止被访问的网址
52 acl badurl dstdomain .baidu.com ##设定baidu的所有网站都不能被客户端访问
53 http_access deny badurl ##禁止badurl
54 http_access allow localnet ##允许本地网访问
55 http_access allow localhost ##允许本地主机访问
设定可允许通过本服务器远程访问缓存
61 http_port 3128 ##允许通过3128端口
64 cache_dir ufs /var/spool/squid 100 16 256 ##缓存的所在目录,100表示缓存所能缓存的大小是100M,16表示16个主目录,256表示256个子目录
[root@foundation41 ~]# systemctl restart squid ##重启服务
2.测试
以下操作在虚拟机
ping www.baidu.com
ping www.qq.com
无法ping通说明不能连接上
打开虚拟机浏览器
edit –>Preferences
–>Settings…
然后
www.baidu.com 说明不允许访问百度
www.qq.com 可以访问腾讯
反向代理
反向代理(网站内容加速和分发)Squid是一个支持HTTP, HTTPS, FTP的web缓存代理,它能通过缓存和反复使用频繁访问的网页来减少带宽、提高响应速度。
首先重置虚拟机,确保没有httpd服务
配置
[root@localhost ~]# yum install squid ##下载squid
[root@localhost ~]# systemctl start squid.service ##开启squid服务
[root@localhost ~]# vim /etc/squid/squid.conf ##编辑配置文件
59 http_port 80 vhost vport ##80端口
60 cache_peer 172.25.254.140 parent 80 0 no-query ##访问172.25.254.140
64 cache_dir ufs /var/spool/squid 100 16 256 ##缓存文件
[root@localhost ~]# systemctl restart squid.service
配置140虚拟机:
测试:
在客户端编辑
[root@foundation60 ~]# vim /etc/hosts
172.25.254.133 www.westos.com
然后用浏览器访问
轮叫调度
轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
这里我们模拟两个服务器的轮叫
[root@localhost ~]# vim /etc/squid/squid.conf ##编辑配置文件
60 cache_peer 172.25.254.140 parent 80 0 no-query originserver name=web1 round-robin weight=3 ##轮叫三次
61 cache_peer 172.25.254.60 parent 80 0 no-query originserver name=web2 round-robin weight=1 ##轮叫一次
62 cache_peer_domain www.westos.com web1 web2 ##建立web1 web2 的轮叫
[root@localhost ~]# systemctl restart squid.service
配置140主机:
编辑默认访问文件
配置60主机:
编辑默认访问文件
测试:
在客户端编辑
[root@foundation60 ~]# vim /etc/hosts
172.25.254.133 www.westos.com
然后用浏览器访问
172.25.254.140
172.25.254.60
访问www.westos.com
刷新一次后
刷新三次后