跳转至

第七章:生产部署

Nginx 配置

server {
    listen 80;
    server_name example.com;

    location /events {
        proxy_pass http://backend:8000;
        proxy_http_version 1.1;

        # SSE 必需配置
        proxy_set_header Connection '';
        proxy_buffering off;
        proxy_cache off;

        # 超时配置
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s;

        # 禁用缓冲
        chunked_transfer_encoding off;
    }
}

负载均衡

upstream backend {
    server backend1:8000;
    server backend2:8000;
}

server {
    location /events {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Connection '';
        proxy_buffering off;

        # 会话保持
        ip_hash;
    }
}

Docker 部署

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
# docker-compose.yml
version: '3'

services:
  backend:
    build: .
    ports:
      - "8000:8000"

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - backend

小结

生产部署要点:

  • Nginx 配置:禁用缓冲、长连接
  • 负载均衡:会话保持
  • Docker 部署:容器化

下一章我们将学习最佳实践。