作为站长,Nginx 反向代理是必会技能之一。不管你是跑多个网站、做负载均衡,还是保护后端服务,Nginx 都是性价比最高的选择。今天这篇不写基础安装,直接上干货——生产环境常用的反向代理配置技巧。
为什么你需要反向代理
说个真实场景:你有三台服务器,分别跑着不同的应用——Next.js 前端在 3000 端口,Python API 在 5000 端口,还有一个 WordPress 博客。直接暴露这些端口太危险了。用 Nginx 做反向代理,对外只开放 80 和 443,内部转发到各个应用,安全又优雅。
基础配置模板
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:5000;
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;
}
}X-Real-IP 告诉后端真实的客户端 IP,X-Forwarded-Proto 让后端知道你用的是 HTTPS。
负载均衡
upstream backend {
least_conn;
server 192.168.1.10:5000 weight=3;
server 192.168.1.11:5000 weight=2;
server 192.168.1.12:5000 backup;
}缓存加速
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g;
server {
location /api/ {
proxy_cache my_cache;
proxy_cache_valid 200 10m;
add_header X-Cache-Status $upstream_cache_status;
proxy_pass http://backend;
}
}常见坑
上传文件失败:加 client_max_body_size 100m;
502 Bad Gateway:调大 proxy_connect/read/send_timeout
HTTPS 证书:certbot --nginx -d api.example.com 自动续期
总结
Nginx 反向代理是站长工具箱里最趁手的家伙。基础几行配置就能解决多服务暴露问题,进阶的负载均衡和缓存更是规模化不可或缺的技能。