【问题标题】:How to use SSL with Flask如何在 Flask 中使用 SSL
【发布时间】:2014-05-06 14:35:01
【问题描述】:

我正在尝试将 Flask 设置为在 SSL 上运行,同时将所有 HTTP 流量重定向到 HTTPS。

我目前正在使用 Apache 作为 Web 服务器,它正在正确地为端口 80 HTTP 上的流量提供服务。但是,当我将端口 80 VirtualHost 下的配置移动到端口 443 并为端口 80 设置重定向时,重定向有效,但 Apache 一直显示 Apache 测试页面,并且不为 Flask 应用程序提供服务。错误日志没有显示任何有用的信息。我看到的唯一错误是Directory index forbidden by Options directive: /var/www/html。我什至不使用 /var/www/html,而且我知道这主要是对旧浏览器的警告。

这是我的 Apache 虚拟主机设置:

LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix run/wsgi

NameVirtualHost *:80
<VirtualHost *:80>
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

NameVirtualHost *:443
<VirtualHost *:443>
  SSLEngine on
  SSLEngine on
  SSLCertificateFile <<FILE PATH>>
  SSLCertificateKeyFile <<FILE PATH>>
  SSLCertificateChainFile <<FILE PATH>>
  SSLProtocol all -SSLv2
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

  WSGIPassAuthorization On
  WSGIDaemonProcess api processes=4 threads=1
  WSGIProcessGroup api
  WSGIScriptAlias / /usr/local/app/api/current/conf/application.wsgi

  AddType text/html .py

  <Directory /usr/local/app/api/current/>
    Order deny,allow
    Allow from all
  </Directory>
</VirtualHost>

它有什么问题?当我将所有 WSGI 和 Directory 行复制到端口 80 并复制出 443 时,它可以正常工作。

【问题讨论】:

  • 与烧瓶没有真正的关系...也许删除烧瓶关键字?

标签: python apache ssl flask virtualhost


【解决方案1】:

结帐SSlify。使用 this small flask 扩展,所有流量都从 HTTP 重定向到 HTTPS。

您所要做的就是在初始化您的烧瓶应用程序时运行以下命令:

from flask import Flask
from flask_sslify import SSLify

app = Flask(__name__)
sslify = SSLify(app)

【讨论】:

    【解决方案2】:

    这个问题属于超级用户。

    顺便说一句,这与 Flask 无关。 您在 VirtualHost 定义中缺少 DocumentRoot 指令。 所以 Apache 使用默认的/var/www/html

    【讨论】:

    • 我还有其他没有 DocumentRoot 的应用程序正在运行,它们仍然可以工作。事实上,flask.pocoo.org/docs/deploying/mod_wsgi 根本没有提到 DocumentRoot。我会将其发布给超级用户。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2021-09-29
    相关资源
    最近更新 更多