凌峰创科服务平台

CentOS如何快速搭建HTTP代理服务器?

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

使用 Squid (功能最全面)

Squid 是一个功能非常全面的代理缓存服务器,这里我们搭建一个带用户名密码认证的 HTTP 代理。

CentOS如何快速搭建HTTP代理服务器?-图1
(图片来源网络,侵删)

安装 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
  • (可选) 设置代理只允许来自本机的连接:为了安全,可以先限制访问来源。

    CentOS如何快速搭建HTTP代理服务器?-图2
    (图片来源网络,侵删)
    # 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 通常放在最后。

  • 启用和配置认证: 这是实现用户名密码登录的关键。

    1. 在配置文件末尾添加以下内容:

      # --- 开始认证配置 ---
      # 定义一个名为 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 包中。

CentOS如何快速搭建HTTP代理服务器?-图3
(图片来源网络,侵删)
# 安装 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

客户端配置

客户端配置和方法一类似。

  • **服务器地址
分享:
扫描分享到社交APP
上一篇
下一篇