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

Plesk服务器Docker部署FastAPI无法代理请求求助

解决Plesk+Docker部署FastAPI的HTTPS/端口访问问题

核心问题拆解

  • https://example.com:8000报SSL错误:FastAPI容器默认仅处理HTTP请求,未配置SSL证书,直接用HTTPS访问容器端口会触发SSL握手失败。
  • 不带端口访问网关超时:Nginx代理规则配置有误,要么代理目标指向错误,要么协议不匹配(比如Nginx向FastAPI的HTTP端口发送HTTPS请求),导致上游连接超时;Docker收到的无效请求正是这种不匹配的HTTPS请求。

修复步骤

1. 修正Nginx代理配置(解决无端口访问超时)

登录Plesk面板,找到对应域名的Nginx设置,调整代理规则:

  • 代理目标必须指向Docker映射的本地HTTP端口,比如http://127.0.0.1:8000,禁止使用HTTPS协议。
  • 添加必要的代理头,保证FastAPI能正确识别请求来源:
location / {
    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;
}
  • 保存配置后,在Plesk「工具与设置>服务管理」中重启Nginx服务。

2. 限制容器端口仅本地访问(推荐)

既然用Nginx做反向代理,无需让容器端口直接暴露外网:

  • 在Docker扩展中修改FastAPI容器的端口映射,将0.0.0.0:8000:8000改为127.0.0.1:8000:8000,仅允许本地Nginx访问容器端口。

3. 规范HTTPS访问方式

  • 不要直接用https://example.com:8000访问,正常通过https://example.com访问即可——Nginx会完成SSL终结,再将HTTP请求转发给FastAPI容器。
  • 若必须通过带端口的HTTPS访问(不推荐),需给FastAPI容器配置SSL:
    • 将Plesk生成的SSL证书(路径通常在/usr/local/psa/var/certificates/)挂载到容器内部。
    • 修改FastAPI启动命令,用Uvicorn指定SSL参数:
uvicorn main:app --host 0.0.0.0 --port 8000 --ssl-keyfile /container/path/privkey.pem --ssl-certfile /container/path/fullchain.pem

4. 验证配置有效性

  • 重启FastAPI容器和Nginx后,访问https://example.com测试是否正常响应。
  • 查看Nginx日志(/var/log/nginx/下对应域名的日志文件),确认无上游连接超时错误。
  • 查看Docker日志,确认收到的是正常HTTP请求,不再出现无效请求记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:42:35