首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Squid代理搭建全指南

Squid代理搭建全指南

原创
作者头像
智维攻城狮
发布2025-09-01 09:27:47
发布2025-09-01 09:27:47
26000
代码可运行
举报
文章被收录于专栏:Linux运维Linux运维
运行总次数:0
代码可运行

Squid代理搭建全指南

1️⃣ 前言

在网络运维与安全领域,代理服务器是流量调度、访问控制和缓存加速的重要工具。 Squid 作为开源、高性能的 HTTP/HTTPS/FTP 缓存代理,广泛应用于企业内网、教育网络、爬虫集群等场景。 本文将从 原理 → 安装 → 配置 → 优化 → 安全加固 全流程讲解,帮助你快速搭建可用、稳定且安全的 Squid 代理服务。


2️⃣ Squid 工作原理概述

  • 代理转发:客户端请求 → Squid → 目标服务器 → Squid → 客户端
  • 缓存机制:对静态资源(HTML、CSS、JS、图片等)进行本地缓存,减少重复请求
  • 访问控制:通过 ACL(Access Control List)限制访问来源、目标域名、时间段等
  • 协议支持:HTTP、HTTPS(需 CONNECT 隧道)、FTP 等

架构示意

代码语言:javascript
代码运行次数:0
运行
复制
[Client] ⇄ [Squid Proxy] ⇄ [Internet]

3️⃣ 环境准备

项目

推荐配置

系统

Ubuntu 20.04 / CentOS 7+

内存

≥ 1GB(缓存多建议 4GB+)

磁盘

≥ 10GB(缓存目录需额外空间)

网络

公网 IP(或内网测试环境)


4️⃣ 安装 Squid

Ubuntu/Debian

代码语言:javascript
代码运行次数:0
运行
复制
sudo apt update
sudo apt install squid -y

CentOS/RHEL

代码语言:javascript
代码运行次数:0
运行
复制
sudo yum install squid -y

安装完成后,主配置文件路径:

代码语言:javascript
代码运行次数:0
运行
复制
/etc/squid/squid.conf

5️⃣ 基础配置

5.1 修改监听端口

默认端口为 3128,可在 squid.conf 中修改:

代码语言:javascript
代码运行次数:0
运行
复制
http_port 3128

5.2 设置访问控制(ACL)

示例:仅允许特定 IP 段访问

代码语言:javascript
代码运行次数:0
运行
复制
acl allowed_ips src 192.168.1.0/24
http_access allow allowed_ips
http_access deny all

5.3 启用缓存目录

代码语言:javascript
代码运行次数:0
运行
复制
cache_dir ufs /var/spool/squid 100 16 256
  • 100:缓存大小(MB)
  • 16256:目录层级

5.4 启动与开机自启

代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl enable squid
sudo systemctl start squid

6️⃣ HTTPS 代理支持(隧道模式)

Squid 默认支持 HTTP,若需 HTTPS:

代码语言:javascript
代码运行次数:0
运行
复制
acl SSL_ports port 443
acl CONNECT method CONNECT
http_access allow CONNECT SSL_ports

客户端需配置为 HTTP 代理,访问 HTTPS 时会自动使用 CONNECT 隧道。


7️⃣ 性能优化建议

  • 增加缓存内存
代码语言:javascript
代码运行次数:0
运行
复制
cache_mem 256 MB
  • 调整文件描述符
代码语言:javascript
代码运行次数:0
运行
复制
ulimit -n 65535
  • 开启多进程/多线程(高并发场景):
代码语言:javascript
代码运行次数:0
运行
复制
workers 4
  • 合理设置缓存策略
代码语言:javascript
代码运行次数:0
运行
复制
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

8️⃣ 安全加固

  • 限制来源 IP(避免被滥用)
  • 启用认证
代码语言:javascript
代码运行次数:0
运行
复制
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm Squid Proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated

生成用户密码:

代码语言:javascript
代码运行次数:0
运行
复制
sudo apt install apache2-utils -y
htpasswd -c /etc/squid/passwd user1
  • 定期更新系统与 Squid
  • 监控日志
代码语言:javascript
代码运行次数:0
运行
复制
tail -f /var/log/squid/access.log

9️⃣ 常见问题排查

问题

可能原因

解决方案

代理无法访问外网

防火墙阻挡

开放 3128 端口

HTTPS 报错

CONNECT 未配置

检查 ACL

缓存无效

refresh_pattern 不匹配

调整规则


🔟 总结

Squid 作为成熟的代理解决方案,具备 高性能、可扩展、可控性强 的优势。 通过合理配置 ACL、缓存策略与安全加固措施,可以在企业、教育、爬虫等多种场景中稳定运行。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Squid代理搭建全指南
    • 1️⃣ 前言
    • 2️⃣ Squid 工作原理概述
    • 3️⃣ 环境准备
    • 4️⃣ 安装 Squid
      • Ubuntu/Debian
      • CentOS/RHEL
    • 5️⃣ 基础配置
      • 5.1 修改监听端口
      • 5.2 设置访问控制(ACL)
      • 5.3 启用缓存目录
      • 5.4 启动与开机自启
    • 6️⃣ HTTPS 代理支持(隧道模式)
    • 7️⃣ 性能优化建议
    • 8️⃣ 安全加固
    • 9️⃣ 常见问题排查
    • 🔟 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档