服务器代理是网络架构中常见的技术,主要用于转发请求、隐藏服务器真实IP、负载均衡、访问控制等场景,设置服务器代理需根据实际需求选择代理类型(如正向代理、反向代理),并完成软件安装、配置文件修改、服务启动等步骤,以下以主流代理软件Squid(正向代理)和Nginx(反向代理)为例,详细说明设置流程。
正向代理设置(客户端通过代理访问外网)
正向代理适用于内网用户通过代理服务器访问互联网的场景,常用于企业管控、访问限制等,以Linux系统(CentOS 7)安装Squid为例:
安装Squid
yum update -y # 更新系统软件包 yum install -y squid # 安装Squid
修改配置文件
Squid主配置文件为/etc/squid/squid.conf
,备份后编辑关键参数:
cp /etc/squid/squid.conf /etc/squid/squid.conf.bak # 备份原配置 vim /etc/squid/squid.conf # 编辑配置文件
核心配置项如下:
- 监听地址与端口:默认监听3128端口,可修改为内网IP(如192.168.1.100)
http_port 192.168.1.100:3128
- 访问控制:允许内网网段(192.168.1.0/24)访问
acl localnet src 192.168.1.0/24 # 定义内网网段 http_access allow localnet # 允许内网访问 http_access deny all # 拒绝其他访问
- 缓存配置(可选):设置缓存目录大小(如10GB)
cache_dir ufs /var/spool/squid 10000 16 256
启动服务并设置开机自启
systemctl start squid # 启动Squid服务 systemctl enable squid # 设置开机自启 systemctl status squid # 检查服务状态
客户端配置
客户端(浏览器/系统)需设置代理服务器地址为168.1.100:3128
,即可通过代理访问外网。
反向代理设置(服务器端负载均衡与加速)
反向代理用于接收客户端请求,转发至后端服务器,常用于网站负载均衡、HTTPS卸载等,以Nginx为例(Linux系统,Ubuntu 20.04):
安装Nginx
apt update -y # 更新软件包列表 apt install -y nginx # 安装Nginx
配置反向代理
编辑Nginx配置文件/etc/nginx/sites-available/default
:
vim /etc/nginx/sites-available/default
核心配置如下(以代理HTTP为例):
- 监听端口:默认80端口,可修改为其他端口(如8080)
server { listen 80; server_name yourdomain.com; # 替换为域名或服务器IP location / { proxy_pass http://backend_servers; # 转发至后端服务器组 proxy_set_header Host $host; # 保留原始请求头 proxy_set_header X-Real-IP $remote_addr; # 记录客户端IP } }
- 后端服务器集群(负载均衡):在
http
块中定义上游服务器http { upstream backend_servers { server 192.168.1.101:8080; # 后端服务器1 server 192.168.1.102:8080; # 后端服务器2 least_conn; # 最少连接数负载均衡算法 } # 其他配置... }
启动服务并测试
nginx -t # 检查配置文件语法 systemctl restart nginx # 重启Nginx服务 systemctl enable nginx # 开机自启 curl -I http://yourdomain.com # 测试代理是否生效(查看响应头是否来自后端服务器)
关键注意事项
- 防火墙配置:确保代理端口(如Squid的3128、Nginx的80)已开放,Linux系统可通过
firewall-cmd --add-port=3128/tcp --permanent
开放端口。 - 权限与日志:代理软件需以root或低权限用户运行(避免安全风险),日志文件(如Squid的
/var/log/squid/access.log
)需定期清理。 - 性能优化:根据服务器负载调整缓存大小、连接超时时间(如Nginx的
proxy_connect_timeout
),避免代理成为性能瓶颈。
配置示例表格
Squid正向代理关键配置项
配置项 | 说明 | 示例 |
---|---|---|
http_port |
监听地址与端口 | http_port 192.168.1.100:3128 |
acl |
定义访问控制列表 | acl localnet src 192.168.1.0/24 |
http_access |
应用访问规则 | http_access allow localnet |
cache_dir |
缓存目录与大小 | cache_dir ufs /var/spool/squid 10000 16 256 |
Nginx反向代理核心指令
指令 | 说明 | 示例 |
---|---|---|
proxy_pass |
转发请求的后端地址 | proxy_pass http://backend_servers |
proxy_set_header |
修改请求头 | proxy_set_header Host $host |
upstream |
定义后端服务器集群 | upstream backend_servers { server 192.168.1.101:8080; } |
FAQs
Q1:设置代理后客户端无法连接,可能的原因及解决方法?
A:常见原因包括:① 防火墙未开放代理端口(检查firewall-cmd
或ufw
状态);② 代理服务未启动(执行systemctl status squid/nginx
确认);③ 客户端代理地址配置错误(检查IP和端口是否与服务器一致),可通过telnet 代理IP 代理端口
测试网络连通性。
Q2:反向代理如何实现HTTPS加密?**
A:在Nginx配置中添加SSL证书与监听443端口:
server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /path/to/cert.pem; # 证书路径 ssl_certificate_key /path/to/key.pem; # 私钥路径 location / { proxy_pass http://backend_servers; } }
需提前申请SSL证书(如Let’s Encrypt免费证书),并确保后端服务器支持HTTP(或配置HTTPS到HTTPS代理)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/23748.html