fastapi服务修改为https

本文介绍了在Ubuntu系统上如何安装和使用mkcert工具生成本地信任的HTTPS证书,然后将这些证书应用于uvicorn以启动使用FastAPI构建的HTTP服务。通过mkcert安装和证书生成的步骤,以及uvicorn启动服务的命令,实现了从HTTP到HTTPS的安全升级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uvicorn 默认是http

  • ubuntu系统中安装mkcert
# 安装相关依赖
sudo apt-get update
sudo apt install wget libnss3-tools
# 下载mkcert可执行文件
wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.3.0/mkcert-v1.3.0-linux-amd64
# 将可执行文件赋权并放至/usr/local/bin下
chmod +x  mkcert
sudo mv mkcert /usr/local/bin
# 检查安装是否成功
mkcert --help
  • 利用mkcert证书生成工具生成CA
mkcert -install
Using the local CA at "/root/.local/share/mkcert"
The local CA is already installed in the system trust store!
 
# 生成的CA证书存放于/root/.local/share/mkcert,可以反复使用
# rootCA.pem 证书 
# rootCA-key.pem 秘钥

# 会在当前路径下生成 0.0.0.0-key.pem 0.0.0.0.pem
mkcert 0.0.0.0
  • 使用uvicorn 拉起fastapi服务(当前路径下包含了0.0.0.0-key.pem 0.0.0.0.pem),会发现使用的是https协议
uvicorn fastapi_demo:app --ssl-keyfile 0.0.0.0-key.pem --ssl-certfile 0.0.0.0.pem --host=0.0.0.0 --port=8000
# Uvicorn running on https://0.0.0.0:8000

参考文章:https://blog.youkuaiyun.com/weixin_44800915/article/details/106494624

FastAPI 是一个现代的、快速(高性能)的 Web 框架,用于构建 API,它基于标准 Python 类型提示,可以通过 Swagger UI 和 ReDoc 生成交互式 API 文档。部署 FastAPI 应用到服务器上并使其可通过 IP 地址访问,通常涉及以下步骤: 1. **开发和测试**:首先在本地完成开发并使用如 uvicorn 或 hypercorn 这样的 ASGI 服务器进行测试。 2. **服务器准备**:在目标服务器上安装操作系统和必要的依赖,比如 Python、pip、系统级 Web 服务器(如 Nginx)和 FastAPI 所需的 ASGI 服务器(如 Uvicorn)。 3. **部署应用**:将你的 FastAPI 应用代码部署到服务器上。 4. **设置后台运行**:为了让 FastAPI 应用作为服务在后台运行,可以使用进程管理工具如 systemd 或 supervisor。 5. **配置 Web 服务器**:设置 Nginx 或其他 HTTP 服务器作为反向代理,将请求转发到运行 FastAPI 的 ASGI 服务器。这一步骤通常包括配置 SSL(如 Let's Encrypt 提供的免费证书)以启用 HTTPS。 6. **设置防火墙和安全组**:确保服务器的防火墙或安全组设置允许外部通过 HTTP(端口 80)和 HTTPS(端口 443)访问你的应用。 7. **启动服务**:启动你的 FastAPI 应用和 Web 服务器,检查是否能够通过服务器的 IP 地址访问你的 FastAPI 应用。 具体示例(假设使用 Uvicorn 作为 ASGI 服务器): ```bash # 使用 pip 安装 FastAPI 和 Uvicorn pip install fastapi uvicorn # 将你的 FastAPI 应用代码放到服务器上 # 运行你的 FastAPI 应用 uvicorn your_app:app --host 0.0.0.0 --port 8000 # 设置 Nginx # 编辑 Nginx 配置文件,添加类似下面的内容 # server { # listen 80; # location / { # proxy_pass http://localhost:8000; # 这里的 8000 是 Uvicorn 运行的端口 # } # } # 重启 Nginx 服务以应用更改 systemctl restart nginx # 确保你的应用可以通过服务器的 IP 地址访问 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值