部署
flask run 启动的开发服务器是单进程、无安全加固的,仅用于开发。生产环境必须使用专业 WSGI 服务器,并在前面放置反向代理。
架构总览
选型
- Gunicorn(Linux 首选):成熟稳定,
-w多进程 + 可选gevent/gthread并发模型 - uWSGI:功能丰富,配置较复杂
- Waitress:纯 Python、跨平台,Windows 上的主要选择
- 反向代理:Nginx / Caddy(自动 HTTPS)
Gunicorn
worker 数经验值为 CPU 核数 × 2 + 1。绑定 127.0.0.1 而不是 0.0.0.0,只允许本机的 Nginx 访问。
Nginx 反向代理
Flask 在代理后需要信任转发头,否则 url_for(..., _external=True) 会生成 http 链接:
systemd 守护
容器化
先复制 requirements.txt 单独安装依赖,可以充分利用 Docker 层缓存。
生产清单
-
DEBUG=False,SECRET_KEY来自环境变量且足够随机 - 数据库连接串、第三方密钥全部通过环境变量注入
- 配置
ProxyFix并在 Nginx 设置转发头 - 静态文件由 Nginx/CDN 服务
- 日志输出到 stdout(容器)或文件轮转(参见日志章节)
- 提供健康检查端点(如
GET /healthz返回 200) - HTTPS 强制(HSTS)、会话 Cookie 设置
Secure