如何在Flas中使用SSL

2024-06-06 23:54:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我目前正在使用Apache作为web服务器,它正在正确地为端口80http上的通信服务。但是,当我将端口80虚拟主机下的配置移动到端口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和目录行复制到端口80并复制出443时,它可以正常工作。


Tags: path端口httpsapihttpflaskwsgiapache
2条回答

这个问题属于超级用户。

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

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

在初始化烧瓶应用程序时,您只需运行以下操作:

from flask import Flask
from flask_sslify import SSLify

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

相关问题 更多 >