您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux下如何搭建Squid代理服务器
## 一、Squid代理服务器概述
### 1.1 什么是Squid
Squid是一个功能完善且稳定的开源代理服务器软件(GNU通用公共许可证),主要支持HTTP、HTTPS、FTP等协议。作为缓存代理服务器,Squid可以:
- 加速Web请求响应
- 减少带宽消耗
- 控制网络访问
- 提供访问日志分析
### 1.2 核心功能特性
- **缓存加速**:通过缓存频繁访问的内容提升响应速度
- **访问控制**:基于IP、域名、时间等维度进行访问限制
- **流量优化**:支持负载均衡和流量整形
- **安全防护**:可过滤危险内容并隐藏客户端真实IP
- **协议支持**:兼容HTTP/1.1、HTTPS、FTP等协议
## 二、环境准备
### 2.1 系统要求
- 操作系统:主流Linux发行版(Ubuntu/CentOS/Debian等)
- 硬件配置:
- 最低1核CPU/1GB内存
- 建议2核CPU/4GB内存(高并发场景)
- 磁盘空间:至少10GB可用空间(缓存目录专用)
### 2.2 网络规划
| 配置项 | 示例值 | 说明 |
|-----------------|------------------|-----------------------|
| 服务器IP | 192.168.1.100 | 代理服务器内网地址 |
| 监听端口 | 3128 | 默认代理端口 |
| 缓存目录大小 | 5GB | 根据用户量调整 |
## 三、安装Squid服务
### 3.1 Ubuntu/Debian系统安装
```bash
sudo apt update
sudo apt install squid -y
sudo yum install epel-release -y
sudo yum install squid -y
squid -v
# 应显示类似:Squid Cache: Version 5.x
配置文件路径:/etc/squid/squid.conf
# 网络监听配置
http_port 3128
# 访问控制列表
acl localnet src 192.168.1.0/24
acl SSL_ports port 443
acl Safe_ports port 80
# 缓存设置
cache_dir ufs /var/spool/squid 5000 16 256
# 日志配置
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
http_port
:可配置多个端口如 3128 8080
cache_mem
:建议不超过物理内存的1/3maximum_object_size
:默认4MB,根据需求调整acl allowed_ips src 192.168.1.50 192.168.2.0/24
http_access allow allowed_ips
http_access deny all
acl workhours time MTWHF 09:00-18:00
http_access allow workhours
acl banned_sites dstdomain .youtube.com .facebook.com
http_access deny banned_sites
cache_dir ufs /data/squid_cache 5000 16 256
# 参数说明:
# 5000 - 缓存大小(MB)
# 16 - 一级子目录数
# 256 - 二级子目录数
cache_mem 512 MB
maximum_object_size_in_memory 256 KB
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
sudo htpasswd -c /etc/squid/passwords proxy_user
修改配置文件:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
认证类型 | 安全性 | 配置复杂度 | 适用场景 |
---|---|---|---|
Basic | 低 | 简单 | 内部测试环境 |
Digest | 中 | 中等 | 普通生产环境 |
NTLM | 高 | 复杂 | Windows域环境 |
mkdir /etc/squid/ssl
cd /etc/squid/ssl
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \
-keyout squid.key -out squid.crt
cat squid.key squid.crt > squid.pem
http_port 3128 intercept
https_port 3130 cert=/etc/squid/ssl/squid.pem intercept
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
access_log daemon:/var/log/squid/access.log squid
# 日志格式自定义
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
sudo apt install sarg
sarg -l /var/log/squid/access.log -o /var/www/sarg
# 增加文件描述符限制
echo "ulimit -n 65535" >> /etc/profile
# 调整TCP参数
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.core.somaxconn=8192
# 工作进程数建议为CPU核心数的1.5倍
workers 6
# I/O线程配置
io_threads 4
# 检查配置语法
squid -k parse
# 查看详细日志
tail -f /var/log/squid/cache.log
错误代码 | 含义 | 解决方案 |
---|---|---|
ERR_ACCESS_DENIED | 访问被拒绝 | 检查acl规则配置 |
ERR_DNS_FL | DNS解析失败 | 检查DNS服务器设置 |
ERR_CONNECT_FL | 连接目标服务器失败 | 检查网络连通性 |
http_access deny manager
chmod 640 /etc/squid/squid.conf
iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j DROP
http_port 3128 transparent
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
客户端 → 边缘Squid → 父级Squid → 源站
配置示例:
cache_peer parent.example.com parent 3128 3130
cp -a /etc/squid /etc/squid_backup
systemctl stop squid
squid -k parse -f /etc/squid/squid.conf
命令 | 作用 |
---|---|
systemctl start squid |
启动服务 |
squid -k reconfigure |
重载配置 |
squid -k rotate |
轮转日志文件 |
squid -z |
初始化缓存目录 |
注意:生产环境部署前建议在测试环境充分验证,所有敏感操作应做好备份预案。 “`
这篇文章包含: 1. 技术细节与实用配置示例 2. 表格对比和结构化排版 3. 从安装到高级配置的完整流程 4. 安全建议和性能优化方案 5. 常见问题解决方法
可根据实际需求调整配置参数和章节深度,建议在测试环境验证后再应用于生产环境。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。