Nginx 反代到底干了啥?从黄牛抢票说起
你知道 Nginx 反向代理是什么嘛?
如果网络是一个大市场,那 Nginx 反向代理就是“黄牛”。开玩笑的,其实它更像一个客服小姐姐。
正向代理 vs 反向代理
先搞清两个概念:
- 正向代理(VPN就是典型例子):你说“我要看 Netflix”,代理说“我替你去看”。服务器不知道是你,只知道是代理。
- 反向代理(Nginx就是典型例子):你说“我要看百度”,代理说“我帮你找服务器”。你不知道是哪台服务器给你的数据,只知道是代理给你的。
为什么要用 Nginx 反向代理?
想象一下,你开了一家火锅店。一天只有 10 个桌子,但来了 100 个人。怎么办?
- 请一个叫号小姐姐(Nginx)站在门口
- 客人来了,号小姐说“等一下呢”——这就是负载均衡
- 如果某个厨师今天请假了,把客人引导到另一个厨师——这就是故障迁移
- 不能让客人直接进厨房,要通过号小姐——这就是安全性
简单配置示例
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/ {
proxy_pass http://localhost:4000;
proxy_set_header Host $host;
}
}这段配置意思是:当有人访问 example.com 时,Nginx 把请求转发给 localhost:3000(你的 Node.js 应用);如果访问 /api/,就转发给 localhost:4000(你的 Python 后端)。
Nginx 还能做什么?
- 静态文件服务(HTML/CSS/JS)
- HTTPS 终止(配合 Let's Encrypt)
- 请求限流(防 DDos)
- Gzip 压缩
- 缓存加速
总结
Nginx 反向代理就是你网站的“门面”——客人看见的是它,后面的服务器长什么样他们不知道。简单、高效、稳定,几乎每个生产环境都有它。