Files
meijiaka-zy/python-api/nginx/meijiaka-zy.conf
T
小鱼开发 95e55293c6 security: 全面生产安全加固与部署修复
后端安全:
- DEBUG 默认 True → False
- 彻底移除 AUTH_BYPASS 认证绕过
- 验证码不再明文打印到日志
- 上传接口增加大小限制(500MB/20MB/100MB)与魔数校验
- python-jose → PyJWT, 更新 requirements.lock/uv.lock
- Bandit 恢复关键规则(B104/B301/B305/B314/B324/B603/B607)
- 修复 5 处 try_except_pass, 15 处加 nosec 注释
- 启用 Bandit pre-commit 钩子

前端安全:
- 配置完整 CSP 策略
- 收紧 Capabilities(fs:allow-read-file → $RESOURCE/**)
- 移除硬编码 devToken
- 清理前端 TODO(美家卡智影命名统一)

部署修复:
- docker-compose.prod 增加 alembic 迁移步骤
- api + scheduler 增加 Redis 心跳健康检查
- Nginx 添加安全响应头
- Nginx client_max_body_size 100M → 500M
- .env.example 补充 UPLOAD_MAX_* 配置与安全注释

其他:
- /voice/upload 合并到 /upload/audio
- Rust 上传增加文件大小检查
- 清理 Rust 19 处 println! + 前端 21 处 console.info
- 修复 VideoCompose.tsx toast 未导入(已有bug)
2026-05-10 23:31:34 +08:00

64 lines
1.9 KiB
Plaintext

# 美家卡智影 API - Nginx 反向代理配置 (acme.sh)
# ===========================================
# 域名: dev.tapi.meijiaka.cn (测试环境)
#
# 证书由 acme.sh 自动管理,路径:
# /etc/nginx/ssl/dev.tapi.meijiaka.cn.key
# /etc/nginx/ssl/dev.tapi.meijiaka.cn.crt
server {
listen 80;
server_name dev.tapi.meijiaka.cn;
# acme.sh 验证路径
location /.well-known/acme-challenge/ {
root /var/www/acme-challenge;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name dev.tapi.meijiaka.cn;
# SSL 证书(由 acme.sh install-cert 部署)
ssl_certificate /etc/nginx/ssl/dev.tapi.meijiaka.cn.crt;
ssl_certificate_key /etc/nginx/ssl/dev.tapi.meijiaka.cn.key;
# SSL 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# 日志
access_log /var/log/nginx/meijiaka-zy.access.log;
error_log /var/log/nginx/meijiaka-zy.error.log;
# 反向代理到 Docker 容器(8081 端口)
location / {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
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;
proxy_connect_timeout 60s;
proxy_send_timeout 120s;
proxy_read_timeout 120s;
client_max_body_size 500M;
# 安全响应头
add_header X-Content-Type-Options nosniff always;
add_header X-Frame-Options DENY always;
add_header Referrer-Policy strict-origin-when-cross-origin always;
}
}