返回笔记
DevOps

Nginx 反向代理完全指南

Nginx 反向代理 负载均衡 Docker Web服务器

Nginx 是互联网最流行的 Web 服务器和反向代理。你访问的绝大多数网站,后面都跑着 Nginx。

Nginx 能做什么

  • 静态文件服务:直接返回 HTML、CSS、JS、图片
  • 反向代理:把请求转发到后端应用(FastAPI、Node.js等)
  • 负载均衡:把流量分发给多台后端服务器
  • SSL 终结:处理 HTTPS 加解密,后端只关心 HTTP
  • 缓存:缓存常用内容,减轻后端压力
  • 限流:保护后端不被恶意流量打垮

反向代理完整配置

server {
    listen 80;
    server_name example.com;

    # 静态文件
    location /static/ {
        alias /app/static/;
        expires 30d;
        add_header Cache-Control "public";
    }

    # API 反代
    location /api/ {
        proxy_pass http://backend:8000;
        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_read_timeout 60s;
    }

    # 前端页面
    location / {
        proxy_pass http://frontend:3000;
    }
}

负载均衡

upstream backend {
    server backend1:8000 weight=3;
    server backend2:8000 weight=1;
    server backend3:8000 backup;
}

按权重分发请求,某台挂了自动跳过。

常用优化

  • gzip 压缩:gzip on; gzip_types text/plain application/json;
  • 连接保持:keepalive_timeout 65;
  • 上传限制:client_max_body_size 100M;
  • Worker 进程数:worker_processes auto; 自动匹配 CPU 核心数