squid 代理服务器应用(下)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云防火墙,500元 1000GB
简介: 定位是缓存加速缓存从后端的web服务器获取到的加速是为了客户端访问的squid 三种模式:传统代理 需要客户端指向squid代理服务器,客户端能感知到squid代理服务器的存在透明代理(常用) 客户端不需要配置,只要直接访问即可,服务端,借助了防火墙规则及静态路由的方式,完成透明代理反向代理 做为类似与Nginx服务器的反向代理功能,但自身不需要一个首页,基于IP:端口,权重的方式完成反向 代理对于Squid自身的管理/功能 :ACL:主要做的是http access (基于http协议,access访问) 的允许和拒绝管理sarg:日志分析功能,可以以天的方式指定将ac

web1 操作:


systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
netstat -natp | grep 80
  


2387773-20210908160300555-490740346.png

检测

在浏览器输入Web服务器IP地址访问,查看Web服务器访问日志,显示的是由代理服务器替客户机在访问。


2387773-20210908160331600-1205260508.png


查看Web1访问日志的新增记录  


tail -f /var/log/httpd/access_log


4、构建透明代理服务器:

 

Squid服务器配置
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37
systemctl restart network
#60行修改添加提供内网服务的IP地址,和支持透明代理选项transparent
vim /etc/squid.conf
......
http_access allow all
http_access deny all
http_port 192.168.100.100:3128 transparent
systemctl restart squid
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
iptables -F
iptables -t nat -F
# 添加防火墙规则(将来源为100网段:80/443端口的流量重定向到3128端口)
iptables -t nat -I PREROUTING -i ens37 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 
iptables -t nat -I PREROUTING -i ens37 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
#如果要进行重启,则需要配置以下规则
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
2.web1服务器
systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
netstat -natp | grep 80
# 添加一条静态路由
route add -net 192.168.100.0/24 gw 192.168.116.80
3.客户端关闭代理,修改win10 地址为100网段
访问web1服务器
查看Web1访问日志的新增记录
tail -f /var/log/httpd/access_log


5、ACL访问控制:


在配置文件squid.conf中,ACL访问控制通过以下两个步骤来实现:


使用acl配置项定义需要控制的条件: 通过http_access配 置项对已定义的列表做“允许"或“拒绝”访问的控制


定义访问控制列表


格式: acl列表名称 列表类型 列表内容


  • 列表名称: 名称自定义,相当于给acl起个名字
  • 列表类型: 必须使用squid预定义的值,对应不同类别的控制条件
  • 列表内容: 是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格为分 隔,为“或"的关系)


方法一:
vim /etc/squid.conf
......
acl localhost src 192.168.100.10/24                     #源地址为192.168.184.10
acl MYLAN src 192.168.100.0/24                          #客户机网段
acl destinationhost dst 192.168.226.129/32              #目标地址为192.168.184.20
acl MC20 maxconn 20                                     #最大并发连接20
acl PORT port 21                                        #目标端口21
acl DMBLOCK dstdomain .qq.com                           #目标域,匹配域内所有站点
acl BURL url_regex -i ^rtsp:// ^emule://                #以rtsp://.emule://开头的URL,-i表示忽略大小写
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$         #以.mp3、.mp4、.rmvb结尾的URL路径
acl WORKTIME time MTWHF 08:30-17:30                     #时间为周一--至周五8:30~17:30,"MTWHF"为每个星期的英文首字母
第一条插入:
http_access deny host
方法二:
#启动对象列表管理
mkdir /etc/squid
vim /etc/squid/dest.list
192.168.226.129                                         #Squid服务器IP
192.168.226.0/24                                        #任意需要的网段
vim /etc/ squid.conf
.......
acl destinationhost dst "/etc/squid/dest.list"          #调用指定文件中的列表内容
http access deny(或allow) destinationhost                #注意,如果是拒绝列表,需要放在http_access allow all前面
systemctl restart squid


6、Squid日志分析:


sarg ( Squid Analysis Report Generator),是一款squid日志分析工具,采用HTML格式,详细列出每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数、访问量等


#安装图像处理软件包
yum install -y gd gd-devel pcre-devel
mkdir /usr/local/sarg
#将zxvf sarg-2.3.7. tar.gz压缩包上传到/opt目录下
tar zxvf sarg-2.3.7.tar.gz -C /opt/
cd /opt/sarg-2.3.7
./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \                    #配置文件目录,默认是/usr/loca/etc
--enable-extraprotection                    #额外安全防护
-----------------------------------------------------------------------------------------------
./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
--------------------------------------------------------------------------------------------------
make && make install
vim /etc/sarg/sarg.conf
--7行--取消注释
access_log /usr/local/squid/var/logs/access.1og                 #指定访问日志文件
--25行--取消注释
title "Squid User Access Reports"                               #网页标题
-- 120行--取消注释,修改
output_dir /var/www/html/sarg                                   #报告输出目录
--178行--取消注释
user_ip no                                                      #使用用户名显示
--184行--取消注释,修改
topuser_sort_field connect reverse                              #top排序中,指定连接次数采用降序排列,升序是normal
-- 190行--取消注释,修改
user_sort_field connect reverse                                 #对于用户访问记录,连接次数按降序排序
--206行--取消注释,修改
exclude_hosts /usr/local/sarg/noreport                          #指定不计入排序的站点列表的文件
--257行--取消注释
overwrite_report no                                             #同名同日期的日志是否覆盖
--289行--取消注释,修改
mail_utility mailq.postfix                                      #发送邮件报告命令
--434行--取消注释,修改
charset UTF-8                                                   #指定字符集UTF-8
--518行--取消注释
weekdavs 0-6                                                    #top排行的星期周期
--525行--取消注释
hours 0-23                                                      #top排行的时间周期
--633行--取消注释
www_document_root /var/www/html                                 #指定网页根目录
#添加不计入站点文件,添加的域名将不被显示在排序中
touch /usr/local/sarg/noreport
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
sarg --help                 #获取帮助
#运行
sarg                         #启动一次记录
#验证
yum install httpd -y
systemctl start httpd
在squid服务器上使用浏览器访问http://192.168.226.129/sarg, 查看sarg报告网页。
date -s
#添加计划任务,执行每天生成报告
vim /usr/local/sarg/report.sh
#/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /usr/1ocal/squid/var/logs/access.log -o /var/www/html/sarg
-z -d $YESTERDAY-$TODAY &> /dev/null
exit 0
chmod +x /usr/local/sarg/report.sh
crontab -e
0 0 * * * /usr/1ocal/sarg/report.sh


7、反向代理:


如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理


服务器将向后台的Web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地


供下一个请求者使用

 

工作机制:


  • 缓存网页对象,减少重复请求
  • 将互联网请求轮询或按权重分配到内网web服务器
  • 代理用户请求,避免用户直接访问Web服务器,提高安全


开启防火墙、本地关闭HTTPD
systemctl start firewalld
systemctl stop httpd
iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
vim /etc/ squid.conf
60行--修改,插入-------
http_port 192.168.226.129:80 accel vhost vport
cache_peer 192.168.226.130 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.226.131 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.kgc.com                     #表示对www.kgc.com的请求,squid向192.168.200.70和192.168.226.131的80端口发出请求
---------------------------------------------------------------------------------------------------------------------------------------------------------
http_port 80 accel vhost vport
#squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和webserver的请求端口(vhost vport)绑定,这个时候请求到了squid, squid是不用转发请求的,而是直接要么从缓存中拿数据要么向,绑定的端口直接请求数据。
accel:反向代理加速模式
vhost:支持域名或主机名来表示代理节点
vport:支持IP和端口来表示代理节点
parent:代表为父节点,上下关系,非平级关系
80:代理内部web服务器的80端口
0:没有使用icp,表示就一台squid服务器
no-query:不做查询操作,直接获取数据
originserver:指定是源服务器
round-robin:指定squid 通过轮询方式将请求分发到其中一-台父节点
max_conn:指定最大连接数
weight:指定权重
name:设置别名
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
systemctl stop squid
service squid reload
#后端web2节点服务器设置
yum install -y httpd
systemctl start httpd
#节点1(web1):
echo "this is test01" >> /var/www/html/index.html
#节点2(web2):
echo "this is test02" >> /var/www/html/index.html
#客户机的域名映射配置
修改C: \Windows\System32 \drivers\etc\hosts 文件
192.168.226.129 www.kgc.com
#客户机的代理配置
打开浏览器,工具-->Internet选项-->连接-->局域网设置-->开启代理服务器(地址: Squid服务器IP地址,端口:80)
浏览器访问http://www.lvbu.com
相关文章
|
1月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
74 0
|
23天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
52 2
|
1月前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
5天前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
2天前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
|
19天前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
20天前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力?
如何优化 SSR 应用以减少服务器压力?
|
28天前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
23天前
|
机器学习/深度学习 人工智能 边缘计算
高算力服务器的应用场景
【10月更文挑战第18天】高算力服务器作为现代信息社会不可或缺的计算资源,正广泛应用于各行各业。从人工智能到科学研究,从智能交通到数字孪生,它为复杂的计算任务提供了不可替代的支持。
28 0
|
1月前
|
监控 Java 关系型数据库
构建高效可靠的服务器端应用
【10月更文挑战第6天】构建高效可靠的服务器端应用