bash,sudo apt-get update,sudo apt-get install squid,
`,安装完成后,Squid 服务默认未启动,需手动启动并设置为开机自启:,
`bash,sudo systemctl start squid,sudo systemctl enable squid,
`# 三、基本配置,Squid 的主要配置文件是
/etc/squid/squid.conf。以下是一些关键配置项:,1. http_port:定义 Squid 监听的端口和 IP 地址
`plaintext,http_port 3128,
`,这将使 Squid 在本地 3128 端口监听 HTTP 请求。,2. acl:访问控制列表(ACL),用于指定哪些请求可以被缓存或转发。允许所有来源的请求:,
`plaintext,acl all src 0.0.0.0/0,
`,3. http_access:基于 ACL 的访问权限控制,允许或拒绝特定请求。允许所有请求:,
`plaintext,http_access allow all,
`,4. cache_dir:设置缓存目录路径及大小等参数,如:,
`plaintext,cache_dir ufs /var/spool/squid 100 16 256,
`,这表示使用
/var/spool/squid 作为缓存目录,一级缓存大小为 100MB,二级缓存大小为 16MB,三级缓存大小为 256MB。# 四、正向代理配置,若要将 Squid 配置为正向代理服务器,供客户端使用,可在
squid.conf 中进行如下配置:,1. http_port:除了上述基本配置外,还可以指定特定的 IP 地址和端口
`plaintext,http_port 192.168.1.100:3128,
`,这将使 Squid 在局域网内的 IP 地址 192.168.1.100 的 3128 端口监听 HTTP 请求。,2. acl:定义允许通过代理的客户端 IP 范围,如仅允许局域网内客户端:,
`plaintext,acl lan src 192.168.1.0/24,
`,3. http_access:设置允许通过代理的规则
`plaintext,http_access allow lan,http_access deny all,
`,这样,只有来自局域网内的客户端请求才被允许通过 Squid 代理。# 五、反向代理配置,当将 Squid 用作反向代理时,可将客户端请求转发到后端服务器。配置步骤如下:,1. acl:定义后端服务器的 IP 地址和端口
`plaintext,acl backend_server dst 192.168.2.100:80,
`,这将匹配目标服务器 192.168.2.100 的 80 端口。,2. http_access:允许对后端服务器的访问:,
`plaintext,http_access allow backend_server,
`,3. cache_peer:指定缓存伙伴,即后端服务器信息,包括其 IP 地址、端口、类型等,如:,
`plaintext,cache_peer 192.168.2.100 parent 80 0 no-query originserver name=backend_server,
`,这里将后端服务器设置为父缓存服务器,不进行查询缓存,且标记为原始服务器。,4. url_rewrite_program:可使用 URL 重写程序来修改请求 URL,使其指向后端服务器。将所有请求重写为指向后端服务器:,
`plaintext,url_rewrite_program /usr/bin/squid_rewrite_program,
`,
squid_rewrite_program 是一个自定义的脚本,用于根据一定规则重写 URL。# 六、缓存策略配置,Squid 提供了多种缓存策略,可根据需求进行配置:,1. refresh_pattern:设置缓存刷新规则
`plaintext,refresh_pattern . 0 20% 4320 refresh-ims,
`,这表示对所有类型的对象,如果未被用户访问则在 4320 秒(1 小时 12 分钟)后刷新,若被用户访问则在 20%的对象过期前刷新,且遵循 IMS(If-Modified-Since)头字段。,2. negative_ttl:设置负缓存(即未命中缓存时的响应)的生存时间
`plaintext,negative_ttl 60,
`,这意味着负缓存在 60 秒内有效,之后再次请求相同资源时会重新检查源服务器。# 七、日志配置,Squid 的日志文件记录了各种操作和事件信息,默认日志文件位于
/var/log/squid/ 目录下。可通过修改
squid.conf 中的日志配置项来调整日志记录级别和格式:,1. access_log:设置访问日志文件路径和记录级别
`plaintext,access_log /var/log/squid/access.log squid,
`,这将记录所有访问请求的详细信息到
access.log 文件中,记录级别为
squid。,2. cache_store_log:设置缓存存储日志文件路径和记录级别
`plaintext,cache_store_log /var/log/squid/cache.log,
`,这将记录缓存存储操作的相关信息到
cache.log 文件中。# 八、启动与停止 Squid 服务,完成配置后,可通过以下命令启动、停止或重启 Squid 服务:,
`bash,sudo systemctl start squid # 启动服务,sudo systemctl stop squid # 停止服务,sudo systemctl restart squid # 重启服务,
`,也可以使用
service 命令进行相同的操作:,
`bash,sudo service squid start # 启动服务,sudo service squid stop # 停止服务,sudo service squid restart # 重启服务,
“# 九、常见问题与解决,1. 无法启动服务:可能是配置文件语法错误或端口冲突。检查配置文件是否正确,确保没有语法错误;同时检查端口是否已被其他程序占用,如有冲突,修改配置文件中的端口号。,2. 缓存命中率低:可能是缓存策略配置不当或缓存空间不足。检查缓存策略设置是否合理,根据实际需求调整刷新规则和缓存大小;同时监控缓存空间使用情况,及时清理过期缓存或增加缓存空间。,3. 访问速度慢:可能是网络带宽限制或后端服务器性能问题。检查网络连接是否正常,是否存在带宽瓶颈;优化后端服务器配置,提高其处理能力;也可以考虑使用负载均衡技术,将请求分散到多个后端服务器上。Squid CDN 教程
一、Squid 简介
1、工作原理
代理机制:Squid 作为代理服务器,代替客户端向目标服务器请求数据,当接收到客户端的数据请求时,Squid 会检查本地缓存,如果命中则直接返回缓存数据给客户端;如果未命中,则从原始服务器获取数据,并将其缓存以便后续请求快速响应。
缓存优势:通过缓存静态资源(如图片、CSS、JavaScript 文件等),减少对原始服务器的重复请求,降低服务器负载,提高网站访问速度。
2、在 CDN 中的角色定位
边缘节点缓存:在 CDN 架构中,Squid 部署在各个边缘节点,负责存储并快速提供本地用户请求的内容,降低网络延迟,实现内容的快速分发。
二、环境准备
1、安装基础系统
以 CentOS 为例,将安装光盘放入光驱,并在 BIOS 设置中选择从光驱启动,安装过程中可选择跳过光盘完整性检查(确保 ISO 镜像文件无误),建议选择英文安装语言和默认美式英语键盘布局,以避免中文显示问题。
分区时手动分区,创建根目录(/)、交换分区(swap)和其他数据存储分区,确保数据安全性和恢复性。
2、安装必要软件包
使用yum
命令安装编译工具和依赖库:sudo yum -y install gcc gcc-c++ make
。
三、Squid 安装与配置
1、下载与安装 Squid
从官方网站下载 Squid 源码包:wget http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.8.tar.gz
。
解压并进入源码目录:tar xvf squid-3.4.8.tar.gz && cd squid-3.4.8
。
配置安装选项:./configure --prefix=/usr/local/squid
。
编译并安装:make && make install
。
2、创建用户和组
为 Squid 创建独立的用户和组,以提高安全性:groupadd squid && useradd -g squid -s /sbin/nologin squid
。
3、配置 Squid
编辑配置文件/usr/local/squid/etc/squid.conf
,主要配置项如下:
配置项 | 说明 | 示例值 |
visible_hostname | 设置主机名 | chengdu.sz1card1.com |
cache_effective_user | 指定运行 Squid 的用户 | squid |
cache_effective_group | 指定运行 Squid 的用户组 | squid |
http_port | 监听端口 | 80 accel vhost vport |
cache_peer | 定义上游服务器 | 192.168.1.11 parent 80 0 no-query originserver round-robin name=proxy1 |
cache_dir | 缓存目录路径 | ufs /usr/local/squid/var/cache 1000 16 256 |
maximum_object_size | 最大对象大小 | 10240 KB |
cache_mem | 缓存内存大小 | 1024 MB |
access_log | 访问日志文件路径 | /usr/local/squid/var/logs/access.log |
cache_log | 缓存日志文件路径 | /usr/local/squid/var/logs/cache.log |
http_access | 访问控制策略 | allow all |
四、启动与测试
1、初始化缓存目录
执行命令sudo /usr/local/squid/sbin/squid -z
,初始化配置文件中定义的缓存目录结构。
2、启动 Squid 服务
后台运行:sudo /usr/local/squid/sbin/squid -s
。
检查进程:使用ps -ef | grep squid
查看 Squid 进程是否存在。
3、测试配置
可以通过浏览器访问http://localhost:80
,如果能正常访问且看到 Squid 的欢迎页面,说明 Squid 安装配置成功。
进一步测试缓存功能,可访问一些静态资源页面,多次访问观察是否从缓存中读取数据以及访问速度的提升。
五、常见问题与解决
1、权限问题
如果遇到权限错误,检查相关目录和文件的权限是否正确设置为 squid 用户和组,缓存目录/usr/local/squid/var/cache
应该具有 squid 用户的读写权限,可以使用chown -R squid:squid /usr/local/squid/var/cache
命令修改权限。
2、端口冲突
确保 Squid 配置文件中指定的端口(如 http_port)未被其他程序占用,如果占用,可以修改 Squid 配置文件中的端口号,然后重启 Squid 服务。
3、缓存未生效
如果缓存没有按预期工作,检查缓存目录是否已正确初始化,以及缓存配置参数是否正确,还可以查看缓存日志(/usr/local/squid/var/logs/cache.log)以获取更多信息。
问题与解答
问题 1:如何查看 Squid 的缓存命中率?
解答:可以通过以下两种方式查看 Squid 的缓存命中率,一是查看 Squid 的缓存日志文件(通常位于/usr/local/squid/var/logs/cache.log
),分析其中的缓存命中和未命中记录来计算命中率;二是使用 Squid 的管理工具(如squidclient
)发送特定命令来获取缓存状态信息,包括命中率等,使用squidclient -h cache_manager_hostname cache_status
命令可以查看缓存的相关状态信息,其中包含命中率等数据。
问题 2:如何限制特定 IP 地址对 Squid 的访问?
解答:在 Squid 的配置文件(squid.conf
)中使用acl
和http_access
指令来实现,使用acl
指令定义一个访问控制列表,acl block_ip src 192.168.1.100/32
,这将匹配来自 IP 地址192.168.1.100
的主机,使用http_access
指令拒绝该 IP 地址的访问:http_access deny block_ip
,这样,来自192.168.1.100
的请求将被 Squid 拒绝。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1632640.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复