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

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

198次阅读
没有评论

共计 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、短信等云产品特惠热卖中