返回文章列表
服务器

反向代理服务器怎么配置?

小站
2025-11-19
1小时前
反向代理服务器怎么配置?

反向代理是连接客户端与后端服务的 “智能中间层”,其配置需围绕业务目标(如隐藏 IP、负载均衡、安全防护)展开。本文以 Nginx 和 HAProxy 为核心工具,简化具体步骤,聚焦配置逻辑与关键场景,帮助快速落地。

一、配置前的核心准备

1. 需求明确

反向代理的配置需先锁定核心目标,常见场景包括:

基础代理:隐藏后端 IP,将客户端请求转发至单台服务器;

负载均衡:分发流量至多台后端服务器,避免单点过载;

安全增强:处理 HTTPS 加密(SSL 卸载)、拦截恶意请求;

资源优化:缓存静态资源(图片、CSS)、按 URL 路由至不同服务。

2. 环境极简清单

反向代理服务器:2 核 4GB 以上,带公网 IP(建议 CentOS/Ubuntu);

后端服务器:1 台或多台(可用内网 IP,仅允许代理服务器访问);

工具选择:Nginx(轻量、多场景适配)或 HAProxy(高性能负载均衡)。

二、Nginx 反向代理

Nginx 的配置核心是通过server块定义代理规则,通过upstream管理后端集群,关键在于 “转发规则 + 附加功能” 的组合。

1. 基础代理:隐藏单后端 IP

目标:客户端访问www.example.com时,请求被转发至后端服务器(内网 IP:192.168.1.100:8080),仅暴露代理 IP。

核心配置:nginx

server {  

   listen 80;  

   server_name www.example.com;  

   location / {  

       proxy_pass http://192.168.1.100:8080;  # 转发至后端  

       # 传递客户端真实信息(避免后端获取代理IP)  

       proxy_set_header Host $host;  

       proxy_set_header X-Real-IP $remote_addr;  

关键:proxy_pass指定后端地址,proxy_set_header确保后端能识别客户端真实 IP。

2. 负载均衡:多后端流量分发

目标:将请求分发至 3 台后端服务器,按性能分配负载(如某台服务器承担更多流量)。

核心配置:nginx

# 定义后端集群(upstream模块)  

upstream web_servers {  

   server 192.168.1.101:8080 weight=1;  # 权重1  

   server 192.168.1.102:8080 weight=1;  # 权重1  

   server 192.168.1.103:8080 weight=2;  # 权重2(承担更多请求)  

   max_fails 3;  # 失败3次后剔除该服务器  

# 代理配置(引用集群)  

server {  

   listen 80;  

   server_name www.example.com;  

   location / {  

       proxy_pass http://web_servers;  # 转发至集群  

       proxy_set_header Host $host;  

负载策略:默认轮询;weight调整权重;ip_hash可固定客户端到某台服务器(适合会话保持)。

3. SSL 卸载与 HTTPS

目标:代理服务器处理 HTTPS 加密,后端仅处理明文,降低计算消耗。

核心配置:nginx

server {  

   listen 443 ssl;  

   server_name www.example.com;  

   # 配置SSL证书(公钥+私钥)  

   ssl_certificate /path/to/cert.crt;  

   ssl_certificate_key /path/to/key.key;  

   # 转发至后端HTTP服务  

   location / {  

       proxy_pass http://web_servers;  

       proxy_set_header X-Forwarded-Proto https;  # 告诉后端使用HTTPS  

# 可选:HTTP自动跳转到HTTPS  

server {  

   listen 80;  

   server_name www.example.com;  

   return 301 https://$host$request_uri;  

4. 静态缓存与 URL 路由

目标:缓存静态资源(如图片),并按 URL 路径转发至不同服务(如/api到 API 服务器)。

核心配置:nginx

# 定义不同后端集群  

upstream api_servers { server 192.168.1.201:8080; }  

upstream admin_servers { server 192.168.1.301:8080; }  

server {  

   listen 443 ssl;  

   server_name www.example.com;  

   # 1. 缓存静态资源(有效期1天)  

   location ~* \.(jpg|css|js)$ {  

       proxy_pass http://web_servers;  

       proxy_cache static_cache;  # 启用缓存  

       proxy_cache_valid 200 1d;  

   # 2. /api请求转发至API服务器  

   location /api {  

       proxy_pass http://api_servers;  

   # 3. /admin限制仅内网访问  

   location /admin {  

       proxy_pass http://admin_servers;  

       allow 192.168.1.0/24;  # 仅允许内网IP  

       deny all;  

三、HAProxy 配置

HAProxy 更适合高并发场景,配置聚焦 “前端接收 + 后端分发”,核心是frontend(客户端入口)与backend(后端集群)的绑定。

基础负载均衡配置

目标:将 80 端口的请求分发至 3 台后端服务器,启用健康检查。

核心配置:ini

global  

   maxconn 4096  # 最大连接数  

defaults  

   mode http  # HTTP模式  

   timeout connect 5s  # 连接超时  

frontend http_front  

   bind *:80  # 监听80端口  

   default_backend http_back  # 转发至后端集群  

backend http_back  

   balance roundrobin  # 轮询策略  

   server web1 192.168.1.101:8080 check  # check启用健康检查  

   server web2 192.168.1.102:8080 check  

   server web3 192.168.1.103:8080 check backup  # 备用服务器  

四、验证与优化

1. 快速验证

客户端访问代理域名,确认返回后端内容;

后端服务器查看连接来源,应为代理内网 IP(验证 IP 隐藏效果);

检查日志(Nginx:/var/log/nginx/access.log;HAProxy:/var/log/haproxy.log),排查 502(后端不可达)等错误。

2. 优化与加固

性能:Nginx 启用keepalive复用连接;限制单 IP 最大连接数(防止攻击);

安全:后端服务器防火墙仅放行代理 IP;过滤高频请求(如 Nginx 的limit_req模块);

高可用:配置健康检查,自动剔除故障后端。

反向代理配置的核心是 “规则定义 + 场景适配”:Nginx 适合需缓存、SSL 卸载、URL 路由的 Web 场景;HAProxy 适合高并发 TCP 代理或复杂负载均衡。

本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议