缓存网页对象,减少重复请求
阿里云内容分发网络( Alibaba Cloud Content Delivery Network,简称CDN )将用户源站资源缓存至阿里云遍布全球的加速节点上。当终端用户请求访问和获取这些资源时,无需回源,系统将就近调用CDN节点上已经缓存的资源。
●src → 源地址
●dst → 目标地址
●port → 端口
●dstdomain → 目标域
●time → 访问时间
●maxconn → 最大并发连接
●url_ regex → 目标URL地址
●Urlpath_ regex → 整个目标URL路径
如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用
两台主机采用仅主机模式
1、主机1----名称为:squid,地址为:192.168.150.132
2、主机2----名称为:web,地址为:192.168.150.136
yum install gcc gcc-c++ -y ##安装工具包
tar zxvf squid-3.4.6.tar.gz -C /opt/ ##解压文件到指定目录
cd /opt/squid-3.4.6 ##进入目录
./configure \
--prefix=/usr/local/squid \ #指定安装路径
--sysconfdir=/etc \ #指定配置文件的路径
--enable-arp-acl \ #启动acl访问控制列表的功能
--enable-linux-netfilter \ #支持内核过滤
--enable-linux-tproxy \ #开启透明模式
--enable-async-io=100 \ #吞吐量
--enable-err-language="Simplify_Chinese" \ #报错信息指定为中文格式
--enable-underscore \ #在url中支持下画线
--enable-poll \ #类模块
--enable-gnuregex #支持正则表达式
make && make install ##编辑并安装
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid.squid /usr/local/squid/var/
vim /etc/squid.conf
http_access allow all #添加一行
#http_access deny all #注释掉此行
http_port 3128 #在此行后面添加缓存的用户及组信息
cache_effective_user squid
cache_effective_group squid
coredump_dir /usr/local/squid/var/cache/squid ##容灾目录
squid -k parse //检查配置文件语法
squid -z //初始化缓存目录
squid /启动服务
cd /etc/init.d/
vim squid ##文件内容如下所示
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo "squid is not running"
fi
;;
restart)
$0 stop &> /dev/null
echo "正在关闭 squid..."
$0 start &> /dev/null
echo "正在启动 squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:$0{start|stop|status|reload|check|restart}"
;;
esac
chmod +x squid ## 给文件添加执行权限
chkconfig --add squid
chkconfig --level 35 squid on ##在3和5的模式下开机启动服务
service squid stop ##关闭服务
service squid start ##启动服务
vim /etc/squid.conf
http_access allow all
http_access deny all
http_port 3128
cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB
reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位,默认设置0表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接发往用户端
iptables -F
setenforce 0
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT #设置防火墙策略
service squid reload #重启服务
systemctl stop firewalld
setenforce 0
yum install httpd -y #安装服务
systemctl start httpd #启动服务
主机采用nat模式,设置IE浏览器代理设置:192.168.150.132,端口:3128
win1访问测试地址:192.168.150.136
cd /var/log/httpd/
cat access_log
##可以看到访问的地址是先走的代理服务器192.168.150.132
三台主机
1、主机1----名称为:squid,双网卡
网卡ens33采用NAT模式,地址为:192.168.150.132
网卡ens36采用仅主机模式,地址为:192.168.100.1
2、主机2----名称为:web,单网卡
网卡采用NAT模式,地址为:192.168.150.136
3、主机3----名称为:win10,单网卡
网卡采用仅主机模式,地址为:192.168.100.100,网关为:192.168.100.1
vim /etc/sysctl.cnf
net.ipv4.ip_forward=1 ##添加一行内容
sysctl -p ##重新加载
ping 192.168.150.132
ping 192.168.100.1
route add -net 192.168.100.0/24 gw 192.168.150.132
vim /etc/squid.conf ##修改内容如下所示
http_port 192.168.100.1:3128 transparent
service squid reload ##重新加载服务
iptables -t nat -I PREROUTING -i ens36 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens36 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
natstat -ntap | grep 3128
systemctl stop firewalld
setenforce 0
systemctl restart httpd
cd /var/log/httpd/
cat access_log
##可以看到访问的地址是先走的代理服务器192.168.150.132
1、所有机器采用nat模式
主机1名称为squid,地址:192.168.150.137
主机2名称为web,地址:192.168.150.138
win10地址:192.168.150.134
2、主机1,安装完成squid工具包并配置完成传统代理方式设置
3、主机2,安装httpd服务启动。
设置代理地址为:192.168.150.137,端口:3128
访问地址:http://192.168.150.138
地址正常可用
vim /etc/squid.conf ##新增的内容如下所示
acl hostlocal src 192.168.150.134/32
http_access deny hostlocal
service squid reload ##重启服务
访问地址:http://192.168.150.138
地址无法访问
vim dest.list ##文件内容如下所示
192.168.150.134
192.168.150.135
vim /etc/squid.conf ##新增的内容如下所示
acl hostlocal src "/etc/squid/dest.list"
http_access deny hostlocal
service squid reload ##重启服务
访问地址:http://192.168.150.138,地址无法访问
地址修改为192.168.150.135,再次访问也被拒绝
地址修改为192.168.150.140,再次访问正常访问
二台主机都采用nat模式,分别关闭防火墙
主机1,名称为squid,地址为:192.168.150.137
主机2,名称为win10,地址为:192.168.150.134
yum install -y gd gd-devel ##安装图像处理
mkdir /usr/local/sarg
tar zxvf sarg-2.3.7.tar.gz -C /opt/
cd /opt/sarg-2.3.7
./configure \
--prefix-/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection #额外安全防护
make && make install
cd /etc/sarg/
vim sarg.conf
#第7行,指定访问日志文件
access_log /usr/local/squid/var/logs/access.log
#第25行,网页标题
title "Squid User Access Reports"
#第120行,报告输出目录
output_dir /var/www/html/squid-reports
#第178行,使用用户名显示
user_ip no
#第184行,top排序中有连接次数、访问字节、降序排列,升序是normal
topuser_sort_field connect reverse
#第190行,注释掉,用户访问记录,连接次数、访问字节按降序排序
#user_sort_field BYTES reverse
第206行,不计入排序的站点列表文件
exclude_hosts /usr/local/sarg/noreport
第257行,同名日志是否覆盖
overwrite_report no
第289行,发送邮件报告命令
mail_utility mailq.postfix
第434行,使用字符集
charset UTF-8
第518行,top排行的星期周期
weekdays 0-6
第525行,top排行的时间周期
hours 0-23
第633行,网页根目录
www_document_root /var/www/html
service squid reload ##重启服务
#添加不计入站点文件,添加的域名将不被显示在排序中
touch /usr/local/sarg/noreport
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
sarg ##启动服务
yum install httpd -y
systemctl start httpd
访问地址为:http://192.168.150.137/squid-reports
界面正常查看日志信息
sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d \$(date -d "1 day ago" + \%d/\%m/\%Y)-\$(date + \%d/\%m/\%Y)
四台主机都采用nat模式,分别关闭防火墙
主机1,名称为squid,地址为:192.168.150.137
主机2,名称为web1,地址为:192.168.150.138
主机3,名称为web2,地址为:192.168.150.139
主机4,名称为win10,地址为:192.168.150.134
web1和web2分别安装httpd服务,并启动,设置不同的主页信息
vim /etc/squid.conf ##配置文件修改内容如下所示
http_port 192.168.150.137:80 accel vhost vport
cache_peer 192.168.150.138 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.150.139 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com
systemctl stop httpd
service squid reload ##重新加载服务
netstat -ntap | grep 80 ##查询80端口的服务
yum install httpd -y
cd /var/www/html
vim index.html
web1界面内容为:this is test web
web2界面内容为:this is kgc web
systemctl start httpd
设置代理地址为:192.168.150.137,端口为:80
访问地址为:http://www.yun.com
##结果可以看到web1和web2的主界面轮询方式展示,如果不正常请清理缓存信息,再重新测试