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

如何使用Gunicorn与Flask实现HTTP到HTTPS的重定向?

Flask + Gunicorn 实现HTTP到HTTPS自动重定向配置方案

我刚搞定了类似的全站HTTPS配置,用Flask结合Gunicorn实现自动把HTTP请求重定向到HTTPS,下面是我实际在用的配置,亲测有效:

1. 在Flask应用中添加重定向逻辑

在你的app.py里加入before_request钩子,每次请求进来先检查协议,如果是HTTP就直接重定向到对应的HTTPS地址,用301永久重定向还能帮搜索引擎更新索引:

from flask import Flask, request, redirect

app = Flask(__name__)

@app.before_request
def before_request():
    # 检测请求是否走的HTTP协议
    if request.url.startswith('http://'):
        # 替换协议为HTTPS,只替换一次防止出现意外
        url = request.url.replace('http://', 'https://', 1)
        # 返回301永久重定向
        return redirect(url, code=301)

if __name__ == '__main__':
    app.run()

2. 配置Supervisor中的Gunicorn命令

要让Gunicorn同时监听80(HTTP)和443(HTTPS)端口,还要指定你的SSL证书和私钥路径,这样它既能接收HTTP请求(然后被Flask重定向),也能直接处理HTTPS请求。我的Supervisor配置里的command是这样的:

command=/home/MyToDo/venv/bin/gunicorn --certfile=/home/MyToDo/SSL/mytodo.vip.cer --keyfile=/home/MyToDo/SSL/mytodo.vip.key -w3 -b0.0.0.0:443 -b0.0.0.0:80 app:app

几个关键参数说明:

  • --certfile/--keyfile:填你实际的SSL证书和私钥路径,记得把文件权限设为600,避免敏感信息泄露
  • -w3:启动3个工作进程,你可以根据服务器的CPU核心数调整,一般是核心数×2+1
  • -b0.0.0.0:443:监听443端口处理HTTPS请求
  • -b0.0.0.0:80:监听80端口接收HTTP请求,再由Flask转去HTTPS

额外注意事项:

  • 确保服务器的80和443端口已经在防火墙里开放,没被其他服务占用
  • SSL证书要有效,比如用Let's Encrypt的免费证书就很方便
  • 如果只是测试阶段,可以先用302临时重定向,确定没问题再换成301

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:10:15