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月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
|
2月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
87 2
|
1月前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
16天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
28天前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
29 2
|
1月前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
2月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力?
如何优化 SSR 应用以减少服务器压力?
|
2月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
2月前
|
机器学习/深度学习 人工智能 边缘计算
高算力服务器的应用场景
【10月更文挑战第18天】高算力服务器作为现代信息社会不可或缺的计算资源,正广泛应用于各行各业。从人工智能到科学研究,从智能交通到数字孪生,它为复杂的计算任务提供了不可替代的支持。
42 0
|
2月前
|
监控 Java 关系型数据库
构建高效可靠的服务器端应用
【10月更文挑战第6天】构建高效可靠的服务器端应用