凌峰创科服务平台

http centos 代理服务器

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

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

使用 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

编辑配置文件:

http centos 代理服务器-图2
(图片来源网络,侵删)
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 通常放在最后。

http centos 代理服务器-图3
(图片来源网络,侵删)

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

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