SSL 和 WSGI 应用程序 - Python

问题描述 投票:0回答:3

我有一个 WSGI 应用程序,我想将其置于 SSL 后面。我的 WSGI 服务器是 gevent

在这种情况下通过 SSL 为应用程序提供服务的好方法是什么?

python ssl wsgi gevent
3个回答
9
投票

gevent.wsgi模块没有内置的SSL支持。如果您正在使用它,请将其放在 nginx 后面,它将通过 HTTPS 接收请求,但使用非加密的 HTTP 将它们代理到您的 gevent 应用程序。

gevent.pywsgi模块确实具有内置的SSL支持并具有兼容的接口。设置

keyfile
certfile
参数以使服务器使用 SSL。这是一个示例:wsgiserver_ssl.py

#!/usr/bin/python
"""Secure WSGI server example based on gevent.pywsgi"""

from __future__ import print_function
from gevent import pywsgi


def hello_world(env, start_response):
    if env['PATH_INFO'] == '/':
        start_response('200 OK', [('Content-Type', 'text/html')])
        return [b"<b>hello world</b>"]
    else:
        start_response('404 Not Found', [('Content-Type', 'text/html')])
        return [b'<h1>Not Found</h1>']

print('Serving on https://127.0.0.1:8443')
server = pywsgi.WSGIServer(('0.0.0.0', 8443), hello_world, keyfile='server.key', certfile='server.crt')
# to start the server asynchronously, call server.start()
# we use blocking serve_forever() here because we have no other jobs
server.serve_forever()

3
投票

看起来 gevent 现在有一个 ssl 模块。 如果您有一个在 gevent 之上实现的 Web 服务器,我想您可以修改它以使用该模块的 ssl 套接字类包装传入连接,然后再将其传递给 http 处理程序。

http://blog.gevent.org/2010/02/05/version-0-12-0-released/

http://www.gevent.org/gevent.ssl.html

否则,您始终可以使用旧的 apache + mod_wsgi 来为您的 wsgi 应用程序提供服务。


2
投票

我会让http服务器处理ssl传输。

© www.soinside.com 2019 - 2024. All rights reserved.