大点干!早点散 | 您所在的位置:网站首页 › squid配置缓存规则 › 大点干!早点散 |
一、squid的概念 squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。 squid代理的作用 通过缓存的方式为用户提供Web访问加速 对用户的Web访问进行过滤控制 二、工作流程当代理服务器中有客户端需要的数据时: a. 客户端向代理服务器发送数据请求; b. 代理服务器检查自己的数据缓存; c. 代理服务器在缓存中找到了用户想要的数据,取出数据; d. 代理服务器将从缓存中取得的数据返回给客户端。 当代理服务器中没有客户端需要的数据时: 客户端向代理服务器发送数据请求; 代理服务器检查自己的数据缓存; 代理服务器在缓存中没有找到用户想要的数据; 代理服务器向Internet 上的远端服务器发送数据请求; 远端服务器响应,返回相应的数据; 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。 ![]() 原理图如下 ![]() 当squid服务器上启用acl访问控制列表的时候 ![]() ACL(Access Control List,访问控制列表),可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤 2、设置ACL分为两步定义ACL调用ACL定义ACL格式: 格式: acl 列表名称 列表类型 列表内容…… 列表名称:自己设定 3、列表类型:src 源地址, dst 目标地址, port 目标端口 dstdomain 目标域名 time 访问时间 maxconn 最大并发量 url_regex 目标URL urlpath_regex 整个目标URL 路径 使用acl配置项定义需要控制的条件 通过http_access配置项对已定义的列表做允许或拒绝的访问控制 ACL一些解释 4、典型的访问规则配置(白名单)'这种是允许某个规则可以,其他的不行 为白名单 白名单安全系数高一点' [root@squid ~]# vim /etc/squid.conf '//编辑squid配置文件' # should be allowed acl hostlocal src 192.168.110.20/32 '//监控client客户端的主机(192.168.110.20/32)取名为hostlocal' # Deny requests to certain unsafe ports http_access deny hostlocal '//调用hostlocal,设置拒绝访问' [root@squid ~]# service squid restart5、允许多个网段在工作时间上网'这种是允许某个规则可以,其他的不行 为白名单 白名单安全系数高一点' [root@localhost ~]# vi /etc/squid.conf ...... acl all src 0.0.0.0/0.0.0.0 acl MYL AN src 192.168.1.0/24 192.168.4.0/24 acl WORKTIME time MTWHF 08:30-17:30 '周一到周五 开头字母' http_ access allow MYLAN WORKTIME '两个列表一起调用' http_ access deny all '最后一条是拒绝' 6、通过黑名单来拒绝访问这里的文件要绝对路径 ,要有可读的权限 [root@localhost opt]# echo "192.168.110.20" > /opt/ip.list [root@localhost opt]# vim /etc/squid.conf acl shang src "/opt/ip.list" '将原来的具体的IP地址改成绝对路径,效果等同于在后面接ip地址 ,只不过这样的话配置文件比较简洁,跟便于管理' http_access deny shang '调用策略,如果上面都匹配不上的话 就取反通过'四、squid日志分析工具–sargSARG的全称是:Squid Analysis Report Generator SARG作为一款Squid日志分析工具,它采用html格式,详细列出了每一位用户访问internet的站点信息,时间占用信息,排名,连接次数,访问量,访问量等。 软件的主页:http://www.sarg-squid.org/ 目前最新的版本是2.0.2 ![]() 安装详细步骤请点击这里 2、squid服务器上安装sarg工具[root@squid ~]# cd /mnt/company/ [root@squid company]# tar zxvf sarg-2.3.7.tar.gz -C /opt '//解压源码包' [root@squid company]# cd /opt/sarg-2.3.7/ [root@squid sarg-2.3.7]# yum install gd gd-devel -y '//安装gd库,gcc gcc-c++之前装过了' [root@squid sarg-2.3.7]# mkdir /usr/local/sarg '//创建sarg目录' [root@squid sarg-2.3.7]# ./configure --prefix=/usr/local/sarg \ '//指定sarg目录' > --sysconfdir=/etc/sarg \ '//配置文件' > --enable-extraprotection '//开启安全防护' [root@squid sarg-2.3.7]# make && make install3、开启sarg工具的功能[root@squid sarg-2.3.7]# vim /etc/sarg/sarg.conf '//配置文件中所有的都被注释了,我们需要取消注释一下内容' access_log /usr/local/squid/var/logs/access.log '第7行//指定访问日志文件' title "Squid User Access Reports" '第25行//网页标题' output_dir /var/www/html/squid-reports '第120行//报告输出目录' user_ip no '第178行//使用用户名显示' exclude_hosts /usr/local/sarg/noreport '第206行//不计入排序的站点列表文件' topuser_sort_field connect reverse '第184//top排序中有连接次数,访问字节,降序排列,升序是normal' overwrite_report no '第257行//同名日志是否覆盖' mail_utility mailq.postfix '第289行//发送邮件报告命令' charset UTF-8 '第434行//使用字符集' weekdays 0-6 '//top排行的时间周期' hours 0-23 '第525行//top排行的时间周期' www_document_root /var/www/html '第633行//网页根目录' [root@squid sarg-2.3.7]# touch /usr/local/sarg/noreport '//添加不计入站点文件,添加的域名将不被显示' [root@squid sarg-2.3.7]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ '//创建sarg命令的软连接' [root@squid sarg-2.3.7]# sarg '//生成报告' SARG: 纪录在文件: 123, reading: 100.00% SARG: 成功的生成报告在 /var/www/html/squid-reports/2020Feb08-2020Feb08 '//提示报告生成在这个目录,我们进入这个目录查看一下' [root@squid sarg-2.3.7]# cd /var/www/html/squid-reports/ '//进入目录' [root@squid squid-reports]# ls 2020Feb08-2020Feb08 images index.html [root@squid squid-reports]# yum install httpd -y '//安装httpd' [root@squid squid-reports]# systemctl start httpd '//开启httpd' [root@squid squid-reports]# systemctl stop firewalld.service '//关闭防火墙' [root@squid squid-reports]# setenforce 04、验证这里是因为我生成了两个报告所以会显示两条 ![]() ![]() 反向代理使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发给用户。这种方式通过降低了WEB服务器的请求数从而降低了WEB服务器的负载。 1、squid服务器设置关闭httpd服务并设置防火墙规则 [root@squid squid-reports]# systemctl stop httpd '//关闭httpd服务,因为会占用80端口,后面设置代理需要用到80端口' [root@squid squid-reports]# systemctl start firewalld.service [root@squid squid-reports]# iptables -F [root@squid squid-reports]# iptables -t nat -F [root@squid squid-reports]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT2、设置反向代理[root@squid squid-reports]# vim /etc/squid.conf http_port 192.168.110.132:80 accel vhost vport '//监控本机80端口' cache_peer 192.168.110.133 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 '//节点服务器1最大访问30,权重1,别名web1' cache_peer 192.168.110.134 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 '//节点服务器2最大访问30,权重1,别名web2' cache_peer_domain web1 web2 www.yun.com '//访问www.yun.com匹配web1,web2节点' '重启服务之前检查80端口有没有被占用 如果有的话kill掉进程' [root@squid squid-reports]# service squid restart '//重启服务' 正在关闭 squid... 正在启动 squid... [root@squid squid-reports]# netstat -ntap |grep 80 '//查看80端口是否被squid使用' tcp 0 0 192.168.110.132:80 0.0.0.0:* LISTEN 5197/(squid-1) 3、添加一台web服务器,并设置主页内容![]() ![]() 设置域名解析(以administrator用户登录) C盘-Windows-system32-drivers-etc-hosts ![]() 这里要切换管理员账号进行更改文件,不然没权限 更改代理服务器的端口为80 ![]() ![]() ![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |