Squid缓存服务器
一.基本概念
Squid是一种用来缓存Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。
二.Squid正向代理
正向代理的原理就类似于v*n服务,假如我的IP上不了外网,而其他地区有台主机可以登陆外网,那台主机就可以当成我的代理,让我通过那台主机去上外网。
在服务端提供代理,首先保证服务端虚拟机能够上网
1.yum install squid.x86_64 -y ##安装软件
2.rpm -qc squid ##查找配置文件
3.systemctl start squid
4.vim /etc/squid/squid.conf ##更改主配置文件
56 http_access allow all ##允许所有网络入口
59 http_port 3128 ##提供代理的默认端口
62 cache_dir ufs /var/spool/squid 100 16 256 ##缓存空间100M,16个一级目录,每个一级目录有256个二级目录
5.systemctl restart squid
6.systemctl stop firewalld
在客户端设置代理
在浏览器
点击Preferences
选择Advanced,点击Network,点击Settings
点击Manaul proxy configuration,添加代理主机ip及端口,设置完成后点击ok
测试
在客户端的浏览器输入域名
设置完成后客户端便可通过代理主机上网,但客户端本身是无法上网的,只是通过代理的缓存目录/var/spool/squid浏览网页信息
三.Squid反向代理
反向代理的原理就是类似于在西安访问www.qq.com,其实访问的不是深圳的www.qq.com的主服务器,而是腾讯在西安的代理服务器,内容是和主服务器一样的,那么西安的代理服务器其实是去深圳取的数据,并且缓存在了西安的那台主机上。这是一种加速机制,因为我所在的地方距离西安的腾讯服务器的路由跳数更少一些,同时也缓解了主服务器的压力。
在服务端提供代理
服务端主机为220
1.yum install squid.x86_64 -y
2.systemctl start squid
3.vim /etc/squid/squid.conf
56 http_access allow all
59 http_port 80 vhost vport ##代理端口为虚拟主机的虚拟端口80
60 cache_peer 172.25.20.120 parent 80 0 proxy-only ##通过80端口访问120主机,parent真正的服务器,proxy-only只提供代理
62 cache_dir ufs /var/spool/squid 100 16 256
4.systemctl restart squid
systemctl stop firewalld
在120主机上建立http默认发布文件
测试
在其他主机上访问220,看到的是120主机的内容
四.Squid实现轮循
轮循就是两台服务器交替为客户端提供缓存。
服务端主机ip为220
vim /etc/squid/squid.conf
60 cache_peer 172.25.20.120 parent 80 0 proxy-only name=web1 round-robin originserver weight=2 ##weight权重
61 cache_peer 172.25.20.250 parent 80 0 proxy-only name=web2 round-robin originserver
62 cache_peer_domain web1 web2 www.hello.com
systemctl restart squid
测试
测试前要保证 120和250两台主机发布了 www.hello.com 站点
在测试主机上
vim /etc/hosts
172.25.20.220 www.hello.com 该站点指定的发布主机为 220即squid服务端
在浏览器 www.hello.com
发现120和250中的内容都能看到,其中120主机的需要刷新两次
企业常用的网络框架
Linux + Apache + Mysql + PHP = LAMP
Linux + Nginx + PHP/Perl/Python = LNMP