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

如何让Flask 2.2.4应用从HTTP切换为HTTPS运行?

Flask 2.2.4 启用HTTPS的可行方案

1. 开发测试:自动生成临时证书

Flask 2.2+ 仍支持通过ssl_context参数启用HTTPS,但使用'adhoc'选项需要依赖cryptography库,先安装依赖:

pip install cryptography

修改启动代码:

if __name__ == '__main__':
    app.run(ssl_context='adhoc', debug=True)

启动后访问https://localhost:5000即可,浏览器会提示证书不安全,仅适合开发测试场景。

2. 自定义自签名证书(更稳定的开发/预发布方案)

如果需要长期使用,建议自行生成自签名证书,用OpenSSL执行以下命令(需提前安装OpenSSL):

openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365

将生成的cert.pem和key.pem放在项目根目录,修改启动代码:

if __name__ == '__main__':
    app.run(ssl_context=('cert.pem', 'key.pem'))

这种方式证书有效期更长,适合需要持续测试的场景。

3. 生产环境:用反向代理处理HTTPS

Flask自带的开发服务器不适合生产环境,推荐用Nginx + Gunicorn/uWSGI的架构:

  1. 安装Gunicorn:
pip install gunicorn
  1. 用Gunicorn启动Flask应用:
gunicorn --bind 127.0.0.1:5000 your_app_module:app
  1. 配置Nginx反向代理(示例):
server {
    listen 443 ssl;
    server_name your-domain.com;

    # 替换为你的SSL证书路径(推荐用Let's Encrypt免费证书)
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:5000;
        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;
    }
}

这种方案性能更强、安全性更高,是生产环境的标准配置。

为什么旧方案可能失效?

之前的教程可能没提cryptography依赖,Flask 2.2+ 使用'adhoc'必须安装该库,否则会报错;另外不要混淆参数名称,新版Flask唯一有效的HTTPS启动参数是ssl_context。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:52:09