凌峰创科服务平台

centos7 代理服务器

在CentOS 7系统中搭建代理服务器是企业网络管理中常见的需求,主要用于流量控制、访问控制、缓存加速等场景,代理服务器类型包括HTTP代理、HTTPS代理、SOCKS代理等,本文将以Squid代理为例,介绍在CentOS 7上配置HTTP代理服务器的详细步骤及注意事项。

centos7 代理服务器-图1
(图片来源网络,侵删)

环境准备与安装Squid

首先确保系统已更新至最新状态,执行以下命令更新软件包列表并安装Squid:

sudo yum update -y
sudo yum install -y squid

安装完成后,启动Squid服务并设置为开机自启:

sudo systemctl start squid
sudo systemctl enable squid

检查服务状态,确保运行正常:

sudo systemctl status squid

配置Squid代理服务器

Squid的主配置文件位于/etc/squid/squid.conf,建议先备份原配置文件:

centos7 代理服务器-图2
(图片来源网络,侵删)
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

基础参数配置

编辑配置文件,修改以下核心参数:

  • 监听端口:默认为3128,可自定义(如http_port 3128)。
  • 访问控制列表(ACL):定义允许访问代理的IP或网段,允许内网网段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 100 16 256,表示缓存100MB空间)。

身份验证(可选)

若需用户名密码认证,需先安装httpd-tools生成密码文件:

sudo yum install -y httpd-tools
sudo htpasswd -c /etc/squid/passwd admin  # 创建用户admin,按提示输入密码

在配置文件中添加认证规则:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm Squid Proxy Authentication
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

日志配置

Squid默认访问日志为/var/log/squid/access.log,可通过logformat自定义日志格式(如记录客户端IP、访问时间、URL等)。

防火墙与SELinux配置

CentOS 7默认使用firewall防火墙,需开放Squid端口(3128):

sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --reload

若启用SELinux,需设置Squid端口策略:

sudo semanage port -a -t squid_port_t -p tcp 3128

或临时关闭SELinux测试(sudo setenforce 0,生产环境不建议)。

客户端配置

浏览器代理设置

在浏览器网络设置中配置代理服务器地址为CentOS 7的IP,端口3128,若启用认证则输入用户名密码。

Linux系统全局代理

/etc/profile~/.bashrc中添加环境变量(适用于终端访问):

export http_proxy="http://admin:password@192.168.1.100:3128"
export https_proxy="http://admin:password@192.168.1.100:3128"

执行source /etc/profile使配置生效。

企业环境常见代理配置场景

场景 配置方法
透明代理 通过iptables将HTTP/HTTPS流量重定向至Squid端口,需结合NAT配置
反向代理 配置http_port 80 vhostcache_peer,后端指向Web服务器
代理缓存优化 调整cache_mem(缓存内存大小)、maximum_object_size(最大缓存对象)

常见问题排查

  1. 客户端连接超时:检查防火墙、SELinux配置,确认Squid服务状态及端口是否开放。
  2. 认证失败:确认密码文件路径正确,检查http_access规则顺序(认证规则需在deny all之前)。

FAQs

Q1: 如何限制客户端只能访问特定网站?
A1: 可通过ACL和access_list实现,仅允许访问example.com

acl allowed_sites url_regex -i ^http://(www\.)?example\.com
http_access allow allowed_sites
http_access deny all

重启Squid服务后,客户端将无法访问其他网站。

Q2: Squid代理服务器如何实现日志轮转?
A2: 使用logrotate工具管理日志,编辑/etc/logrotate.d/squid文件,配置如下:

/var/log/squid/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        systemctl reload squid >/dev/null 2>&1 || true
    endscript
}

此配置将每天轮转一次日志,保留7天历史,并自动压缩旧日志。

分享:
扫描分享到社交APP
上一篇
下一篇