下面我将为您详细介绍两种最主流的代理服务器软件在 CentOS 上的配置方法:Squid(功能强大,传统首选)和 Nginx(现代、高效,也常用于反向代理)。

使用 Squid 配置传统正向代理
Squid 是一个功能非常成熟的代理缓存服务器,特别适合作为企业级的正向代理,让内网用户通过它访问互联网。
安装 Squid
更新你的系统包并安装 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
编辑配置文件:

sudo vi /etc/squid/squid.conf
我们需要关注以下几个核心配置项:
a) 定义监听端口和 IP 地址 默认情况下,Squid 监听所有网络接口的 3128 端口,你可以修改它,或者为了安全,只监听内网 IP。
# 默认配置 http_port 3128 # 修改为只监听内网IP (192.168.1.100) # http_port 192.168.1.100:3128
b) 设置访问控制 这是最关键的一步,决定哪些客户端可以使用你的代理服务器。
# 默认配置,允许所有来源 (非常不安全!) # http_access allow all # 推荐的安全配置: # 1. 首先定义一个允许访问的IP地址段 (例如内网 192.168.1.0/24) acl localnet src 192.168.1.0/24 # 2. 允许本地回环地址 acl localnet src 127.0.0.1/32 # 3. 允许已定义的本地网络访问 http_access allow localnet # 4. 如果你想允许特定IP,可以再添加一条 # acl allowed_ip src 192.168.1.50 # http_access allow allowed_ip # 5. 在最后,拒绝所有其他访问 http_access deny all
注意: http_access 规则是按顺序匹配的,一旦匹配到一条规则,就不会再往下匹配。deny all 通常放在最后。

c) 可选:配置缓存 你可以配置 Squid 缓存 frequently accessed 的对象,以加快访问速度并减少带宽消耗。
# 设置缓存目录大小 (100 GB) cache_dir ufs /var/spool/squid 100000 16 256 # 启用缓存 cache_mem 256 MB maximum_object_size_in_memory 32 MB
d) 可选:配置认证 如果你希望代理服务器需要用户名和密码才能访问,可以配置基本认证。
首先安装 httpd-tools 来生成密码文件:
sudo yum install -y httpd-tools
创建一个密码文件并添加用户:
# -c 表示创建新文件,如果文件已存在则去掉 -c sudo htpasswd -c /etc/squid/users proxyuser # 输入并确认密码
然后在 squid.conf 中添加认证配置:
# 在 http_access allow localnet 之前添加 auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/users auth_param basic realm Proxy Authentication Required acl authenticated proxy_auth REQUIRED # 修改访问控制,允许已认证的用户 http_access allow authenticated http_access allow localnet http_access deny all
启动并设置开机自启
配置完成后,启动 Squid 服务并设置为开机自启。
# 检查配置文件语法是否正确 sudo squid -k parse # 启动服务 sudo systemctl start squid # 设置开机自启 sudo systemctl enable squid
配置客户端
你需要告诉你的客户端(浏览器、操作系统、命令行工具)使用这个代理服务器。
浏览器设置: 在浏览器的网络设置中,配置代理为:
- 地址: 你的 CentOS 服务器 IP
- 端口:
3128
Linux/macOS 命令行设置: 临时设置(当前终端会话有效):
export http_proxy="http://[username]:[password]@192.168.1.100:3128" export https_proxy="http://[username]:[password]@192.168.1.100:3128"
永久设置(推荐):
编辑 ~/.bashrc 或 ~/.bash_profile 文件,添加上面的 export 行。
Windows 系统设置: 在“Internet 选项” -> “连接” -> “局域网设置”中,勾选“为 LAN 使用代理服务器”,并填入地址和端口。
使用 Nginx 配置正向代理
Nginx 虽然以反向代理闻名,但也可以配置为正向代理,它的优点是性能高、配置相对简单,并且可以与 SSL/TLS 结合得很好。
安装 Nginx
sudo yum install -y nginx
配置 Nginx
Nginx 的主配置文件是 /etc/nginx/nginx.conf,但通常我们会把站点配置放在 /etc/nginx/conf.d/ 目录下。
创建一个新的代理配置文件:
sudo vi /etc/nginx/conf.d/http_proxy.conf
# 定义一个名为 "http_proxy" 的 upstream,用于处理 HTTP 请求
# 注意:Nginx 1.9.0+ 才支持 TCP 层代理
# 对于 HTTP,我们可以直接使用 proxy_pass
server {
# 监听内网IP的 8080 端口
listen 192.168.1.100:8080;
server_name _;
# 设置代理缓冲区大小,提高性能
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
# 代理请求到目标服务器
location / {
# 设置代理头信息,让目标服务器知道请求的真实来源
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 核心指令,将所有请求转发到目标地址
# 这里我们转发到公共的 httpbin.org 进行测试
# 实际使用中,你可以去掉 http://httpbin.org,让它代理所有网站
# proxy_pass http://$host$request_uri;
# 测试用,只代理 httpbin.org
proxy_pass http://httpbin.org;
}
}
HTTPS 代理配置:
Nginx 默认不支持直接代理 HTTPS 流量(因为它无法解密流量),要代理 HTTPS,你需要使用 stream 块,这是 Nginx 1.9.0+ 版本才有的功能。
编辑主配置文件 /etc/nginx/nginx.conf 或在 /etc/nginx/conf.d/ 下创建新文件:
# 在 http 块的同级,添加 stream 块
stream {
# 定义一个 HTTPS 代理
server {
# 监听内网IP的 8443 端口
listen 192.168.1.100:8443 ssl;
# 指定证书和私钥(你需要自己生成或购买)
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# 代理流量到目标服务器的 443 端口
proxy_pass $host:443;
}
}
注意: HTTPS 代理配置需要有效的 SSL 证书。
启动并设置开机自启
# 检查 Nginx 配置语法 sudo nginx -t # 启动服务 sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx
配置客户端
配置方式与 Squid 类似,只是端口号不同。
- HTTP 代理地址:
168.1.100 - HTTP 代理端口:
8080 - HTTPS 代理地址:
168.1.100 - HTTPS 代理端口:
8443
