- Squid (经典、功能强大):最老牌、最专业的代理服务器软件,功能极其丰富,支持 HTTP, HTTPS, FTP 等多种协议,适合需要精细控制、认证、缓存等高级功能的场景。
- Nginx (现代、高性能):通常用作 Web 服务器和反向代理,但通过第三方模块
ngx_http_proxy_connect_module,它可以非常方便地搭建一个高性能的 HTTP/HTTPS 代理,配置简单,性能极高。 - tinyproxy (轻量、简单):一个极其轻量级的 HTTP/HTTPS 代理,配置非常简单,资源占用极低,适合个人使用或在资源有限的服务器上快速搭建。
使用 Squid (功能最全面)
Squid 是一个功能非常全面的代理缓存服务器,这里我们搭建一个带用户名密码认证的 HTTP 代理。

安装 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.original # 编辑配置文件 sudo vim /etc/squid/squid.conf
在配置文件中,找到并修改以下几项:
-
(可选) 修改监听端口:默认是
3128,你可以修改成其他未被占用的端口。# http_port 3128 http_port 8888 # 修改为你想要的端口,8888
-
(可选) 设置代理只允许来自本机的连接:为了安全,可以先限制访问来源。
(图片来源网络,侵删)# acl localnet src 192.168.1.0/24 # 允许来自 192.168.1.0/24 网段的访问 # acl localnet src 10.0.0.0/8 # acl localnet src 172.16.0.0/12 # acl localnet src 127.0.0.1/32 ::1/128 # http_access allow localnet # http_access deny all # 修改为只允许来自本机 (127.0.0.1) 的连接 http_access allow localhost http_access deny all
注意:
http_access的顺序非常重要,Squid 会从上到下匹配规则,一旦匹配到一条规则,就不再继续往下匹配。deny all通常放在最后。 -
启用和配置认证: 这是实现用户名密码登录的关键。
-
在配置文件末尾添加以下内容:
# --- 开始认证配置 --- # 定义一个名为 proxy_auth 的 ACL 规则,使用 basic 认证方法 acl auth_users proxy_auth REQUIRED # 允许通过认证的用户 http_access allow auth_users # 设置认证程序为 ncsa_auth,并指向密码文件 auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid_users auth_param basic children 5 auth_param basic realm Squid Proxy Authentication auth_param basic credentialsttl 2 hours # --- 结束认证配置 ---
-
创建用户和密码文件
Squid 使用 htpasswd 命令来生成密码文件。htpasswd 通常在 httpd-tools 包中。

# 安装 httpd-tools sudo yum install -y httpd-tools # 创建密码文件 /etc/squid/squid_users,并创建第一个用户 "myuser" # -c 表示创建新文件,如果文件已存在会覆盖,所以只在创建第一个用户时使用 sudo htpasswd -c /etc/squid/squid_users myuser # 系统会提示你输入两次密码 # New password: # Re-type new password: # Adding password for user myuser # 如果需要添加更多用户,不要使用 -c 参数 # sudo htpasswd /etc/squid/squid_users anotheruser
设置权限
Squid 进程需要能够读取密码文件,所以需要修改其所有者和权限。
# 设置密码文件所有者为 squid 用户 sudo chown squid:squid /etc/squid/squid_users # 设置密码文件权限为仅所有者可读写 sudo chmod 600 /etc/squid/squid_users
启动并设置开机自启
# 启动 Squid 服务 sudo systemctl start squid # 设置开机自启 sudo systemctl enable squid # 检查服务状态 sudo systemctl status squid
客户端配置
你可以在你的浏览器或应用程序中配置代理了。
- 服务器地址: 你的 CentOS 服务器的 IP 地址
- 端口: 你在
squid.conf中设置的端口 (8888) - 认证类型: Basic
- 用户名:
myuser - 密码: 你设置的密码
使用 Nginx (高性能,推荐)
Nginx 本身不直接支持 CONNECT 方法(用于代理 HTTPS),但通过 ngx_http_proxy_connect_module 模块可以实现,性能非常好。
安装依赖和编译 Nginx
CentOS 默认的软件源中没有带该模块的 Nginx,所以需要从源码编译。
# 安装编译所需的依赖 sudo yum groupinstall -y "Development Tools" sudo yum install -y wget pcre-devel zlib-devel openssl-devel git # 下载 Nginx 源码 cd /usr/local/src wget http://nginx.org/download/nginx-1.20.2.tar.gz tar -xzvf nginx-1.20.2.tar.gz # 下载并打上 proxy_connect 补丁 # 注意:补丁版本需要和 Nginx 版本匹配 git clone https://github.com/chobits/ngx_http_proxy_connect_module.git cd nginx-1.20.2 # 应用补丁 patch -p1 < ../ngx_http_proxy_connect_module/patch/proxy_connect_1.20.2+.patch # 配置、编译和安装 # --add-module 指向我们下载的模块路径 ./configure --prefix=/usr/local/nginx --add-module=../ngx_http_proxy_connect_module make sudo make install
配置 Nginx
Nginx 的配置文件在 /usr/local/nginx/conf/nginx.conf,备份并编辑它。
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original sudo vim /usr/local/nginx/conf/nginx.conf
在 http 块中添加或修改一个 server 块,如下所示:
http {
# ... 其他配置 ...
server {
listen 8888; # 监听端口
resolver 8.8.8.8; # 必须指定一个 DNS 服务器,用于解析域名
# 支持 HTTP 代理
location / {
proxy_pass http://$host$request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 支持 HTTPS 代理 (CONNECT 方法)
location / {
proxy_connect_method CONNECT;
proxy_connect_address $host;
proxy_connect_port $server_port;
proxy_pass https://$host$request_uri;
}
}
}
创建系统服务 (可选但推荐)
为了方便管理,可以创建一个 systemd 服务文件。
sudo vim /etc/systemd/system/nginx.service
粘贴进去:
[Unit] Description=The NGINX HTTP and reverse proxy server After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop [Install] WantedBy=multi-user.target
启动并设置开机自启
# 重新加载 systemd 配置 sudo systemctl daemon-reload # 启动 Nginx sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx # 检查状态 sudo systemctl status nginx
客户端配置
客户端配置和方法一类似。
- **服务器地址
