1. 基本反向代理配置
Nginx 反向代理的核心配置是通过 proxy_pass
指令将客户端请求转发至后端服务器。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
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_pass
:指定后端服务器地址(可以是 IP、域名或 upstream 组)。proxy_set_header
:修改请求头,确保后端服务器获取真实客户端 IP 等信息。
2. 负载均衡方案
Nginx 可以通过 upstream
模块实现多台后端服务器的负载均衡。
upstream backend {
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080;
server 192.168.1.103:8080 backup;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
负载均衡策略:
轮询(默认):请求按顺序分发到各服务器。
加权轮询:通过
weight
参数分配不同权重。IP 哈希:使用
ip_hash
确保同一客户端始终访问同一后端。最少连接:使用
least_conn
优先选择连接数最少的服务器。备份服务器:通过
backup
标记备用服务器,仅在主服务器不可用时启用。
3. HTTPS 反向代理
Nginx 可代理 HTTPS 请求,并支持 SSL 终止(在 Nginx 解密后转发明文至后端)。
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
关键配置:
ssl_certificate
和ssl_certificate_key
:指定 SSL 证书路径。X-Forwarded-Proto
:告知后端请求的原始协议(HTTP/HTTPS)。
4. 缓存加速
Nginx 可缓存后端响应,减少重复请求对后端服务器的压力。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend_server;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}
缓存参数说明:
proxy_cache_path
:定义缓存存储路径及内存区域大小。proxy_cache_valid
:设置不同状态码的缓存时间。
5. WebSocket 代理
Nginx 支持代理 WebSocket 连接,需额外配置头信息。
server {
location /ws/ {
proxy_pass http://backend_server;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
关键参数:
Upgrade
和Connection
头:确保 WebSocket 协议升级成功。
6. 安全加固
限制访问:通过
allow
/deny
控制 IP 访问。速率限制:使用
limit_req
防止 DDoS 攻击。隐藏头信息:移除
Server
等敏感头。
location / {
proxy_pass http://backend_server;
proxy_hide_header X-Powered-By;
limit_req zone=req_limit burst=10;
}
总结
Nginx 反向代理功能强大,适用于负载均衡、HTTPS 代理、缓存加速等场景。合理配置可提升性能、安全性和可用性。