在CentOS系统中安装代理服务器可以通过多种方式实现,常见的代理服务器软件包括Squid、Nginx、TinyProxy等,其中Squid功能强大且配置灵活,适用于大多数场景,以下以Squid为例,详细介绍在CentOS 7/8系统中安装和配置代理服务器的步骤,包括环境准备、软件安装、基础配置、安全设置及测试验证等内容。

环境准备
在开始安装前,确保系统满足基本要求:CentOS 7/8 minimal版或完整版,建议内存至少1GB,硬盘空间预留500MB以上,确保系统已更新至最新状态,执行以下命令更新系统软件包:
sudo yum update -y
为代理服务器分配静态IP地址,确保网络连通性,若需通过防火墙访问,需提前开放代理服务端口(默认为3128):
sudo firewall-cmd --permanent --add-port=3128/tcp sudo firewall-cmd --reload
安装Squid代理服务器
Squid在CentOS官方仓库中可直接安装,执行以下命令完成安装:
sudo yum install -y squid
安装完成后,启动Squid服务并设置开机自启:

sudo systemctl start squid sudo systemctl enable squid
检查服务状态,确保运行正常:
sudo systemctl status squid
基础配置
Squid的主配置文件位于/etc/squid/squid.conf,建议先备份原始配置:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
使用vim或nano编辑配置文件,调整以下核心参数:
- 监听地址与端口:默认监听所有接口的3128端口,如需限制特定IP,修改
http_port参数:http_port 192.168.1.100:3128
- 访问控制列表(ACL):定义允许访问代理的客户端IP或网段,仅允许内网网段192.168.1.0/24访问:
acl localnet src 192.168.1.0/24 http_access allow localnet http_access deny all
- 缓存设置:根据磁盘空间调整缓存参数,例如禁用缓存(适用于透明代理)或设置缓存目录:
cache_dir ufs /var/spool/squid 10000 16 256 cache_mem 256 MB
- 日志配置:默认日志位于
/var/log/squid/,可调整日志格式和轮转策略。
配置完成后,检查语法错误:
sudo squid -k parse
若无错误,重启Squid服务加载新配置:
sudo systemctl restart squid
安全与高级配置
- 用户认证:如需限制用户访问,可配置Basic或Digest认证,首先安装
httpd-tools生成密码文件:sudo yum install -y httpd-tools sudo htpasswd -c /etc/squid/users proxyuser
在
squid.conf中添加认证配置:auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/users auth_param basic realm Proxy Authentication acl auth_users proxy_auth REQUIRED http_access allow auth_users
- 透明代理:通过iptables将客户端流量重定向至Squid端口,需开启系统转发:
sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128
- 日志监控:使用
logrotate管理日志文件,防止日志过大,配置文件/etc/logrotate.d/squid默认已包含轮转策略。
测试与验证
- 本地测试:在客户端浏览器配置代理服务器地址(IP:3128),访问
http://ipinfo.io验证IP是否为代理服务器IP。 - 命令行测试:使用
curl命令通过代理访问目标网站:curl --proxy http://代理服务器IP:3128 http://www.example.com
- 日志分析:检查Squid访问日志
/var/log/squid/access.log,确认请求记录正常。
常见问题排查
- 权限问题:确保Squid进程对缓存目录有读写权限,可通过
chown -R squid:squid /var/spool/squid修复。 - 端口冲突:若3128端口被占用,修改
http_port为其他空闲端口,并更新防火墙规则。
相关问答FAQs
Q1: 如何限制客户端只能访问特定网站?
A: 在squid.conf中使用acl和http_access规则实现,仅允许访问example.com和test.com:
acl allowed_sites dstdomain example.com test.com http_access allow allowed_sites http_access deny all
重启Squid服务后,客户端将无法访问其他网站。
Q2: Squid代理服务器如何支持HTTPS流量?
A: Squid默认支持HTTPS代理,但需配置ssl_bump参数进行流量解密,在squid.conf中添加:
ssl_bump stare all sslproxy_cert_error deny all
同时确保安装了openssl-devel库,并在编译时启用SSL支持,重启服务后,HTTPS流量将通过代理转发。
