阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Squid缓存代理服务器安装部署

424次阅读
没有评论

共计 6603 个字符,预计需要花费 17 分钟才能阅读完成。

一、关于缓存代理

1、代理的工作机制
作为应用层的代理服务软件,Squid 主要提供缓存加速和应用层过滤控制的功能。当客户机通过代理来请求 Web 页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机;如果缓存中没有客户机需要访问的页面,则由代理服务器向 Internet 发送访问请求,当获得返回的 Web 页面以后,将网页数据保存到缓存中并发送给客户机。
HTTP 代理的缓存加速对象主要是文字、图像等静态 Web 元素。使用缓存机制后,当客户机在不同的时候访问同一 Web 元素,或者不同的客户机访问相同的 Web 元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了向 Internet 重复提交 Web 请求的过程,提高了客户机的 Web 访问响应速度。
由于客户机的 Web 访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实 IP 地址,起到一定的保护作用。另一方面,代理服务器担任着类似“经纪人”的角色,所以有机会针对要访问的目标、客户机的地址、访问的时间端进行过滤控制。

Squid 缓存代理服务器安装部署

2、代理的基本类型
根据实现的方式不同,代理服务可分为传统代理和透明代理两个常见的代理服务。
1)传统代理
也就是普通的代理服务,首先必须在客户机的浏览器、QQ 聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。
2)透明代理
提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将 Web 访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机来说时是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给 DNS 服务器。
在实际应用中,传统代理多见于 Internet 环境,如为 QQ 程序使用代理可以隐藏本机真实 IP 地址,为下载工具使用多个代理可以规避服务器的并发连接限制。而透明带多见于局域网环境,如在 Linux 网关中启用透明代理后,局域网主机无需进行额外的设置就可以享受更好的上网速度。

二、搭建 Squid 传统代理服务器

Squid 缓存代理服务器安装部署
1、安装 Squid

tar xf squid-3.5.27.tar.gz
yum install gcc gcc-c++ make perl-devel -y  // 安装环境
cd squid-3.5.27/        // 进入源码包进行配置
./configure \
--prefix=/usr/local/squid \ # 单独将配置文件修改到其他目录
--sysconfdir=/etc \     # 单独将配置文件修改到其他目录
--enable-arp-acl \      # 可以在规则中设置为直接通过客户端 MAC 进行管理,防止客户端使用 IP 欺骗
--enable-linux-netfilter \      # 使用内核过滤
--enable-linux-tproxy \     # 支持透明模式
--enable-async-io=100 \     # 异步 I /O,提升存储性能
--enable-err-language="Simplify_Chinese" \      # 错误信息的显示语言
--enable-underscore \       # 允许 URL 中有下划线
--enable-poll \         # 使用 poll()模式,提升性能
--enable-gnuregex       # 使用 GNU 正则表达式
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/      // 更改目录属主和属组

2、更改配置文件(配置传统代理)
vi /etc/squid.conf
http_access allow all
http_port 3128 // 在下面新增
visible_hostname 192.168.80.181
cache_mem 64 MB
cache_swap_low 80
cache_swap_high 97
cache_dir ufs /usr/local/squid/var/cache/squid 512 16 256 // 配置硬盘缓存,打开 #. 缓存目录 512M,其中一级目录 16 个,二级 256 个
cache_effective_user squid
cache_effective_group squid
Squid 缓存代理服务器安装部署

squid -k parse // 检查配置文件
squid -k rec // 重新加载配置文件
squid -zX // 初始化缓存目录

3、制作启动脚本
vi /etc/init.d/squid
#!/bin/bash
#chkconfig: 35 90 25
#config: /etc/squid.conf
#pidfile: /usr/local/squid/var/run/squid.pid
#Description: Squid – Internet Object Cache

PID=”/usr/local/squid/var/run/squid.pid”
CONF=”/etc/squid.conf”
CMD=”/usr/local/squid/sbin/squid”
case “$1” in
start)
netstat -utpln | grep squid &>/dev/null
if [$? -eq 0]
then
echo “Squid is running”
else
$CMD
fi
;;
stop)
$CMD -k kill &>/dev/null
rm -rf $PID &>/dev/null
;;
status)
[-f $PID] &>/dev/null
if [$? -eq 0]
then
netstat -utpln | 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 “ 用法:{start | stop | restart | reload | check | status}”
esac

chmod +x /etc/init.d/squid  // 添加服务执行权限
chkconfig --add squid   // 添加到系统配置中
chkconfig squid on      // 在系统配置中开启
service squid start     // 开启服务
netstat -anpt | grep 3128   // 查看监听端口

Squid 缓存代理服务器安装部署

yum install httpd -y  // 在另外一台服务器上安装 apache
systemctl start httpd   // 启动服务

4、配置代理端口并访问验证
Windows 使用代理服务器
浏览器—工具—Internet 选项—连接—局域网(LAN)设置
Squid 缓存代理服务器安装部署
Linux 使用代理服务器
vi /etc/profile
末行添加
export HTTP_PROXY=http://192.168.80.100:3128 // 使用 HTTP 协议指定代理
export HTTPS_PROXY=https://192.168.80.100:3128 // 使用 HTTPS 协议指定代理
export FTP_PROXY=http://192.168.80.100:3128 // 使用 FTP 协议指定代理
export NO_PROXY=192.168.1.,192.168.2. // 不使用代理的两个局域网段
source /etc/profile // 刷新环境
验证代理服务器
使用 windows 浏览器访问网页 192.168.80.110
Squid 缓存代理服务器安装部署
cat /usr/local/squid/var/logs/access.log // 在 squid 服务器跟踪访问日志文件
Squid 缓存代理服务器安装部署
结论:通过访问日志可以发现客户机 192.168.80.10 访问 web 服务器 192.168.80.110 的记录,说明 squi 的代理服务器发挥了作用。
cat /etc/httpd/logs/access_log // 在 web 服务器查看访问日志的新增记录
Squid 缓存代理服务器安装部署
结论:通过访问日志可以发现来自代理服务器 192.168.80.100 的访问记录,说明当客户机使用代理以后,web 服务器并不知道客户机的真实 IP 地址,因为实际上由代理服务器在代替客户机访问。
当客户机再次访问同一 web 页面时,Squid 访问日志中会增加新的记录,但 web 访问日志中的记录不会有变化(除非页面变更或强制刷新)。说明重复访问同一静态页面时,实际上页面是由代理服务器通过缓存提供的。

三、搭建 Squid 透明代理服务器

Squid 缓存代理服务器安装部署
1、系统环境
内网卡 ens33:192.168.80.100
外网卡 ens37:192.168.90.100
Web 服务器:192.168.80.110
客户端:192.168.90.11
echo 1 > /proc/sys/net/ipv4/ip_forward // 开启 Squid 服务器的路由转发功能
2、更改配置文件(透明代理)
vi /etc/squid.conf // 配置服务器并关闭客户端指定代理设置
Squid 缓存代理服务器安装部署
service squid restart // 重启服务
3、这只 iptables 的重定向策略

iptables -F // 清空 iptables 策略兵器新建策略
iptables -t nat -I PREROUTING -i ens33 -s 192.168.80.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens33 -s 192.168.80.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
service iptables save

4、ACL 访问控制
1) 禁止某 IP 地址主机上网
acl nolink src 192.168.90.9
http_access deny nolink
2) 禁止某网段在某时间段上网
acl nolink src 192.168.1.0/24
acl nowang time MTWHF 9:00-11:30
http_access deny nolink nowang
3) 禁止所有人访问某网站 (精确匹配)
acl nourl dstdomain -i www.qq.com
http_access deny nourl
4) 禁止所有人访问某些网站 (含有关键字的都会过虑)
acl nourl url_regex -i taobao.com
http_access deny nourl
5) 禁止下载某类型的文件
acl nof urlpath_regex -i .avi$ .mkv$
http_access deny nof
6) 禁止访问某类型的网站
acl nop url_regex -i ^emule:// ^thunder
http_access deny nop
5、测试透明代理
内网 web 服务器指定内网网关
vi /etc/sysconfig/network-scripts/ifcfg-ens33
Squid 缓存代理服务器安装部署
外网 web 浏览器指定外网网关
Squid 缓存代理服务器安装部署
打开 win7 浏览器模拟外网客户端
访问 192.168.80.110 // 直接访问内网主机
Squid 缓存代理服务器安装部署

四、搭建 Squid 反向代理服务器

Squid 缓存代理服务器安装部署
1、系统环境
增加一台 web 服务器对应的 IP 地址为:192.168.80.120
2、修改配置文件(反向代理)
vi /etc/squid.conf
http_port 192.168.80.100:80 accel vhost vport
cache_peer 192.168.80.110 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.80.120 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com
Squid 缓存代理服务器安装部署

service squid stop  // 服务重启
service squid start

3、Web 访问代理服务器
Squid 缓存代理服务器安装部署

五、Squid 日志分析(sarg 工具)

1、安装 sarg 工具

yum install httpd gd gd-devel pcre-devel -y     //squid 服务器安装 apache 和对应的库文件
tar xf sarg-2.3.11.tar.gz       // 解压源码包
cd sarg-2.3.11/
./configure \       // 安装前的配置
--prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection
make && make install    // 编译安装

2、相关配置
vi /etc/sarg/sarg.conf // 修改日志分析配置文件
7 access_log /usr/local/squid/var/logs/access.log //squid 的访问日志位置
25 title “Squid User Access Reports” // 网页标题
120 output_dir /var/www/html/squid-reports // 分析报告的存放位置
178 user_ip no // 不使用 IP 代替用户 ID
184 topuser_sort_field BYTES reverse // 升序排列
190 user_sort_field BYTES reverse
206 exclude_hosts /usr/local/sarg/noreport // 设置不生成报告的主机
257 overwrite_report no
289 mail_utility mailx // 指定发邮件命令
434 charset UTF-8
518 weekdays 0-6 // 指定 top 排序星期周期
523 hours 7-12,14,16,18-20 // 指定 top 排序时间周期
633 www_document_root /var/www/html // 网页根目录
Squid 缓存代理服务器安装部署

touch /usr/local/sarg/noreport // 建立不生成报告的主机列表文件
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
sarg        // 启动,执行该命令只记录一次

Squid 缓存代理服务器安装部署

crontab -e  // 做计划任务分时段记录
*/10 * * * * /usr/local/bin/sarg 

3、验证访问
http://192.168.80.100:81/squid-reports/

Squid 缓存代理服务器安装部署

注意:由于上诉 squid 做代理 80 端口被占用,因此将 squid 服务器 httpd 对应的端口改为 81

六、Varnish 与 Nginx 缓存服务器

1、高性能缓存服务器 Varnish
Varnish 是一款高性能的、开源的方向代理服务器和缓存器。挪威最大的在线报纸 Verdens Gang 使用了 3 台 Varnish 代替了原来的 12 台 Squid,性能更好!
Varnish 与 Squid 的对比如下:
(1)优点
Varnish 具有更好的稳定性、更快的访问速度、更多的并发连接支持数,可以通过管理端口来管理缓存。
(2)缺点
1) 在高并发状态下,Varnish 消耗更多的 CPU、I/ O 和内存资源。
2)Varnish 进程一旦挂起、崩溃或者重启,缓存的数据会从内存中释放,此时所有的请求都会转发到后端服务器,给后端服务器造成很大压力。
2、轻量级缓存服务器 Nginx
Nginx 支持类似 Squid 的缓存功能,把 URL 以及相关信息当成 key,用 MD5 编码 Hash 后把数据文件保存在硬盘上。
Nginx 只能为只当的 URL 或者状态码设置过期时间,并不支持类似 Squid 的 purge 命令来手动清除指定的缓存页面。可以通过第三方的 ngx_cache_purge 来清除指定的 URL 缓存。
Nginx 的缓存加速功能是由 proxy_cache 和 fastcgi_cache 两个功能模块完成的。
Nginx 缓存加速的特点如下:
1)缓存功能十分稳点,运行速度不逊于 Squid。
2)对多核 CPU 的利用率比其他的开源软件要好。
3)支持高并发请求数,能同时承受更多的访问请求。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6603字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7987187
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...