python - 如何在 Flask 中使用 SSL

标签 python apache ssl flask virtualhost

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

我目前正在使用 Apache 作为网络服务器,它在端口 80 HTTP 上正常提供流量。但是,当我将 VirtualHost 端口 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 时,它可以正常工作。

最佳答案

这个问题属于 super 用户。

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

关于python - 如何在 Flask 中使用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22690685/

相关文章:

c - 缓存的 SSL session 是否包含以前的 X.509 证书信息?

Python Pandas - 在不读取/重写整个文件的情况下编写新的 CSV 标题行

python如何在一行中排序列表并返回它

python - 如何在Beautiful Soup中找到所有段落中的所有链接

php - 在 php 中创建的 vCard 中未按预期出现换行符

Apache VirtualHost : strip www. 并强制 https

apache - Htaccess 将 http 或 https 从 domain.com 重定向到 https domain.net

Python扭曲的游戏服务器监控

iis - 未安装 SSL 证书

HTTP、HTTPS、共享 SSL 和 SEO