1.什么是squid?
Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器,并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。
2.squid软件介绍
软件相关目录
[root@squid-server ~]# rpm -ql squid
/etc/squid/squid.conf ##配置文件
/etc/rc.d/init.d/squid ##启动脚本
/usr/sbin/squid ##二进制命令
/usr/share/doc/squid-3.1.10 ##手册
/var/log/squid ##日志目录
/var/spool/squid ##缓存目录
配置文件说明
# cat /etc/squid/squid.conf
//设置监听的IP与端口号
http_port 3128
//额外提供给squid使用的内存大小
cache_mem 默认256 MB
//设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
maximum_object_size 4 MB
//设置squid磁盘缓存最小文件
minimum_object_size 0 KB
//设置squid内存缓存最大文件,超过4M的文件不保存到内存
maximum_object_size_in_memory 4096 KB
//定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
cache_dir ufs /var/spool/squid 100 16 256
//log文件日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
//log文件存放路径和日志格式
access_log /var/log/squid/access.log combined
//设置缓存日志
cache_log /var/log/squid/cache.log
//log轮转60天
logfile_rotate 60
//cache目录使用量大于95%时,开始清理旧的cache
cache_swap_high 95
//cache目录清理到90%时停止
cache_swap_low 90
//定义本地网段
acl localnet src 192.168.1.0/24
//允许本地网段使用
http_access allow localnet
//拒绝所有
http_access deny all
//主机名
visible_hostname xxx.xxxx.xxxx
//管理员邮箱
cache_mgr 123456@qq.com
3.squid的正向代理
正向代理: 是位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
实验要求:一台能上网的虚拟机(服务端),一台不能上网的虚拟机(客户端)。通过squid正向代理让客户端能够获得上网能力。
配置服务端网络环境,让其能够上网并搭建yum仓库。
hostnamectl set-hostname server
vim /etc/sysconfig/network-scripts/eth0 ##设置ip,网关
vim /etc/yum.repos.d/westos.repo ##配置yum仓库
route -n ##查看网关
vim /etc/reslov.conf ##自动解析
可以上网
yum install squid -y
systemcl start squid
systemctl enable squid
netstat -antlupe | grep squid ##查看squid开方端口
vim /etc/squid/squid.conf ##修改配置文件
56 http_access allow all 56行,允许所有
62 cache_dir ufs /var/spool/squid 100 16 256 62行,取消注释
缓存大小100M 16个一级目录 256个二级目录
缓存不会一直存在在客户端,会定期清理
systemctl restart squid
systemctl stop firewalld.service
在客户端,ip为172.25.254.216不能上网
浏览器配置代理服务器:指定代理服务器的IP和端口
Firefox: Edit————>Preference————>Advanced————>Network————>Settings————>Manual proxy configuration 编辑--首选项--高级--网络--设置-- 手动填写代理服务器的IP和代理端口
Chrome: 设置——>高级——>打开代理设置——>连接——>局域网设置——>为LAN使用代理服务器前打勾并填上代理服务器的内网IP及其代理端口
IE: 设置——>Internet选项——>连接——>局域网设置--为LAN使用代理服务器前打勾并填上代理服务器的内网IP及其代理端口
4.squid的反向代理
为了更加直观,将上个实验的server改名xian(代理端)
client改为shengzhen(服务端),另加一台客户端。
服务端:
vim /var/www/html/index.html ##编写测试文件
systemctl start httpd
systemctl stop firewalld
代理端:
vim /etc/squid/squid.conf
systemctl restart squid
客户端:
vim /etc/reslov.conf
测试:
5.平衡轮询
意义:可以缓解服务器的压力,能够在不影响用户体验的情况下。通过squid将用户按照指定权重分配到不同的服务器上防止过载。
实验:
本次轮询实验是在反向代理的基础上做的,添加一台ip为172.25.254.217的服务端。
安装httpd服务并编写测试文件
yum install httpd -y
vin /var/www/html/index.html
systemctl start httpd
systemctl stop firewalld
可以正常访问
进入代理端,编写配置文件
vim /etc/squid/squid.conf
测试:
在客户端访问westos.com,刷新访问两次216,再访问一次217