python-2.7 - 如何使用 HTTPS 在 CherryPy WSGI 服务器(Cheroot)上运行 Flask 应用程序?
问题描述
我现在在 CherryPy Cheroot WSGI 服务器上运行 Python 2.7 Flask 应用程序,使用 HTTP,如下所示。
from cheroot.wsgi import Server as WSGIServer
from cheroot.wsgi import PathInfoDispatcher as WSGIPathInfoDispatcher
from MyFlaskApp import app
d = WSGIPathInfoDispatcher({'/': app})
server = WSGIServer(('0.0.0.0', 80), d)
if __name__ == '__main__':
try:
server.start()
except KeyboardInterrupt:
server.stop()
我需要从这里迁移到 HTTPS 吗?我找到了以下说明,但它似乎不适用于我的应用程序。
from cheroot.server import HTTPServer
from cheroot.ssl.builtin import BuiltinSSLAdapter
HTTPServer.ssl_adapter = BuiltinSSLAdapter(
certificate='cert/domain.crt',
private_key='cert/domain.key')
我可以将上述示例应用到 Cheroot 上的 Flask 应用程序吗?如果不是,那么 Cheroot 上用于 HTTPS 的 Flask 应用程序的简单示例是什么?
解决方案
我想出了必要的修改。关于 Cheroot 上带有 https 的 Flask 应用程序的信息不多,所以我想我会分享它。
from cheroot.wsgi import Server as WSGIServer
from cheroot.wsgi import PathInfoDispatcher as WSGIPathInfoDispatcher
from cheroot.ssl.builtin import BuiltinSSLAdapter
from MyFlaskApp import app
my_app = WSGIPathInfoDispatcher({'/': app})
server = WSGIServer(('0.0.0.0', 443), my_app)
ssl_cert = "[path]/myapp.crt"
ssl_key = "[path]/myapp.key"
server.ssl_adapter = BuiltinSSLAdapter(ssl_cert, ssl_key, None)
if __name__ == '__main__':
try:
server.start()
except KeyboardInterrupt:
server.stop()
推荐阅读
- javascript - 将当前日期与从 api 响应收到的日期进行比较
- powershell - Powershell cmdlet New-AzureRmSqlDatabaseExport 中的共享访问签名 (SAS) 密钥有什么格式?
- php - 数组到对象抛出未捕获的错误:调用未定义的方法 stdClass
- excel - 将 16 名玩家分成 4 组,其中没有人来自同一个较早的组
- javascript - toplevel var statement with common vs. assignment statement with comma: why are they different
- php - CakePHP 2.x - 请求数据中的某些字段不完整
- angular - 如何获得可观察的实际值
- python - 使用对数轴刻度时的 Matplotlib 乳胶错误,取决于版本
- javascript - iframe 中的 Instanceof 失败
- sql-server - 在 SQL Operations Studio for MacOS 中创建 SQL 代码段