使用 Squid (功能最强大、最经典)
Squid 是一款非常成熟、功能丰富的开源代理缓存服务器,它不仅支持 HTTP/HTTPS,还支持 FTP、SSL 等多种协议,并带有强大的访问控制、缓存和日志功能,是企业级应用的首选。

安装 Squid
# 更新软件包列表 sudo yum update -y # 安装 Squid sudo yum install -y squid
配置 Squid
Squid 的主配置文件是 /etc/squid/squid.conf,在修改前,最好先备份一份。
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
然后使用 vim 或 nano 编辑器打开配置文件:
sudo vim /etc/squid/squid.conf
以下是一些关键的配置项和说明:
-
设置监听端口和 IP 地址: 默认 Squid 监听所有接口的 3128 端口,你可以修改它。
(图片来源网络,侵删)# 默认配置 # http_port 3128 # 修改为只监听内网IP,192.168.1.100 的 3128 端口 http_port 192.168.1.100:3128
-
设置允许访问的客户端: 这是至关重要的一步,防止你的代理服务器被滥用,你可以定义一个 ACL (Access Control List) 来指定哪些 IP 或网段可以使用。
# 允许的客户端IP地址或网段 acl localnet src 192.168.1.0/24 # 允许 192.168.1.0/24 网段 acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 443 # https acl Safe_ports port 3128 # squid # 默认拒绝所有连接 http_access deny !Safe_ports http_access deny all # 然后允许我们定义的客户端 http_access allow localnet http_access allow localhost
注意:
http_access规则是按顺序从上到下匹配的,一旦匹配到一条规则,就立即执行并停止后续匹配。deny all一定要放在最后。 -
配置缓存 (可选): Squid 的核心功能是缓存,可以加速重复访问的网页。
# 设置缓存目录大小为 100 GB cache_dir ufs /var/spool/squid 100000 16 256
首次运行时需要创建缓存目录:
(图片来源网络,侵删)sudo squid -zZ
-
设置代理认证 (可选,但强烈推荐): 为了安全,最好为代理设置用户名和密码。
-
安装
apache-tools(它包含了htpasswd命令):sudo yum install -y httpd-tools
-
创建密码文件:
# 创建一个用户名为 'user1' 的账户 sudo htpasswd -c /etc/squid/users user1 # 按提示输入密码 # 如果要添加更多用户,不要用 -c 参数(-c表示创建新文件) # sudo htpasswd /etc/squid/users user2
-
修改
squid.conf:# 在 http_access 相关配置下添加 auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/users auth_param basic realm Squid Proxy Authentication auth_param basic credentialsttl 2 hours # 创建一个ACL来匹配认证用户 auth_acl authenticated proxy_auth REQUIRED # 允许认证用户 http_access allow authenticated http_access deny all
-
启动并设置开机自启
# 启动 Squid 服务 sudo systemctl start squid # 设置开机自启 sudo systemctl enable squid
检查状态和防火墙
# 检查 Squid 服务状态 sudo systemctl status squid # 如果防火墙是开启的,需要放行 3128 端口 sudo firewall-cmd --permanent --add-port=3128/tcp sudo firewall-cmd --reload
客户端使用
-
浏览器: 在网络设置中,手动配置代理服务器为你的 CentOS 服务器 IP (如
168.1.100),端口为3128,如果设置了认证,浏览器会弹出用户名和密码输入框。 -
命令行: 使用
curl测试。# 无认证 curl -x http://192.168.1.100:3128 http://ipinfo.io # 有认证 (需要安装 `nc` 或 `netcat`) curl -x http://user1:password@192.168.1.100:3128 http://ipinfo.io
使用 tinyproxy (轻量级、简单)
如果你的需求非常简单,只需要一个基本的、无需缓存的 HTTP 代理,tinyproxy 是一个绝佳的选择,它非常轻量,配置简单,资源占用少。
安装 tinyproxy
sudo yum install -y tinyproxy
配置 tinyproxy
配置文件是 /etc/tinyproxy/tinyproxy.conf。
sudo vim /etc/tinyproxy/tinyproxy.conf
关键配置项:
-
端口:
Port 8888
-
允许的客户端:
# 默认只允许本机连接 Allow 127.0.0.1 # 修改为允许你的内网网段,192.168.1.0/24 Allow 192.168.1.0/24
-
关闭日志 (可选):
LogLevel Info
启动并设置开机自启
sudo systemctl start tinyproxy sudo systemctl enable tinyproxy
检查防火墙
sudo firewall-cmd --permanent --add-port=8888/tcp sudo firewall-cmd --reload
客户端使用
与 Squid 类似,在浏览器或命令行工具中设置代理 IP 和 8888 端口即可。
使用 Privoxy (注重隐私)
Privoxy 不仅仅是一个代理,它还是一个非缓存网页隐私增强代理,它会过滤网页内容,移除广告、 banners,并且可以修改 HTTP 头部信息来保护你的隐私,它通常与 SOCKS 代理(如 Tor)配合使用。
安装 Privoxy
sudo yum install -y privoxy
配置 Privoxy
配置文件是 /etc/privoxy/config,这个文件非常详细,里面有大量注释。
sudo vim /etc/privoxy/config
关键配置项:
-
监听地址和端口:
# 默认只监听 127.0.0.1:8118 listen-address 127.0.0.1:8118 # 如果你想让局域网其他设备使用,可以改为你的内网IP # listen-address 192.168.1.100:8118
-
信任的客户端:
# 默认信任 127.0.0.1 trust-origin-address 127.0.0.1 # 如果上面改为了内网IP,这里也需要添加信任的网段 # trust-origin-address 192.168.1.0/24
启动并设置开机自启
sudo systemctl start privoxy sudo systemctl enable privoxy
检查防火墙
sudo firewall-cmd --permanent --add-port=8118/tcp sudo firewall-cmd --reload
客户端使用
客户端需要配置代理为 http://your_centos_ip:8118。
总结与选择建议
| 特性 | Squid | tinyproxy | Privoxy |
|---|---|---|---|
| 复杂度 | 高 | 低 | 中 |
| 功能 | 强大 (缓存、ACL、认证、反向代理等) | 简单 (基本HTTP转发) | 隐私增强 (过滤、修改请求) |
| 资源占用 | 较高 | 极低 | 低 |
| 适用场景 | 企业、大型网络、需要精细控制 | 个人使用、轻量级应用、物联网设备 | 匿名上网、过滤广告、与Tor配合 |
| 认证 | 支持 | 不支持 (需配合其他方式) | 不支持 (需配合其他方式) |
如何选择?
- 如果你是新手,只需要一个简单的代理让局域网设备上网:选择
tinyproxy,配置最简单,几分钟就能搞定。 - 如果你需要企业级的功能,如访问控制、认证、缓存、反向代理等:选择
Squid,它是行业标准,功能最全面。 - 如果你主要关注隐私,想过滤广告和跟踪脚本,或者想作为 Tor 的入口点:选择
Privoxy。
希望这份详细的指南能帮助你在 CentOS 上成功搭建 HTTP 代理服务器!
