You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI配合Nginx部署后HTTPS模式无法加载静态文件问题求助

FastAPI HTTPS模式下静态资源无法加载修复方案

核心问题根因

  1. Nginx 443端口配置缺失裸域名匹配,访问不带www的HTTPS站点时无法正确命中静态资源规则
  2. 代理请求头拼写错误,FastAPI无法识别前端HTTPS协议,url_for生成的静态资源链接仍为HTTP开头,被浏览器的混合内容安全策略拦截
  3. 静态路径alias配置缺少结尾斜杠,路径拼接异常
  4. supervisor配置存在拼写错误,可能导致应用运行异常

分步修复操作

1. 修正Nginx配置

打开/etc/nginx/sites-enabled/<my_url>.nginx文件做如下修改:

443端口server块补全域名

将443块的server_name修改为和80端口一致:

server {
    listen              443 ssl;
    server_name         www.<my_url>.com <my_url>.com; # 补全裸域名
    # 其余ssl配置保持不变

修正代理请求头

把HTTP和HTTPS块中@yourapplication段的请求头修正为标准格式:

location @yourapplication {
    gzip            on;
    gzip_buffers    8 256k;
    proxy_pass http://127.0.0.1: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_set_header X-Forwarded-Proto $scheme; # 修正拼写错误,去掉多余的l
}

修正静态资源路径配置

把HTTP和HTTPS块中的/static location块修改为带结尾斜杠的格式:

location /static/ {
    gzip            on;
    gzip_buffers    8 256k;
    alias /home/<user_name>/application/static/; # 末尾加斜杠
    expires 365d;
}

修改完成后验证Nginx配置是否合法:

sudo nginx -t

验证通过后重载配置:

sudo systemctl reload nginx

2. 修正FastAPI配置

修改main.py中的FastAPI初始化代码,开启代理头信任:

api = fastapi.FastAPI(
    trusted_hosts=["127.0.0.1", "<my_url>.com", "www.<my_url>.com"]
)

3. 修正supervisor配置

打开supervisor服务脚本,删除拼写错误的环境变量行:

[program:api]
directory=/home/<user_name>/application
command=gunicorn -b 127.0.0.1:8000 -w 4 -k uvicorn.workers.UvicornWorker main:api
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
stderr_logfile=/var/log/app/app.err.log
stdout_logfile=/var/log/app/app.out.log

修改完成后重启应用服务:

sudo supervisorctl reload
sudo supervisorctl restart api

4. 验证静态资源权限

确保Nginx运行用户有静态目录的读取权限:

sudo chown -R <user_name>:www-data /home/<user_name>/application/static
sudo chmod -R 755 /home/<user_name>/application/static

测试方法

使用浏览器隐身模式访问HTTPS站点,打开开发者工具的「网络」标签,确认静态资源请求为HTTPS协议、返回状态码为200即可。如果仍有问题,可查看Nginx错误日志定位具体原因:

tail -f /var/log/nginx/error.log

内容的提问来源于stack exchange,提问作者Brad Allen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:45:05