Frage

ich eine WSGI App haben, dass ich hinter SSL möchte. Mein WSGI Server ist GEVENT .

Was ist ein guter Weg wäre es, die App über SSL in diesem Fall zu dienen?

War es hilfreich?

Lösung

Es sieht aus wie GEVENT jetzt eine ssl-Modul hat. Wenn Sie einen Web-Server auf den GEVENT implementiert haben, ich denke, Sie es mit diesem Modul ssl Socket-Klasse eingehende Verbindungen wickeln ändern könnten, bevor es auf die http-Handler übergeben.

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

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

Sie können sonst immer gut verwenden alte Apache + mod_wsgi Ihre wsgi App zu dienen.

Andere Tipps

Die gevent.wsgi Modul verfügt nicht über integrierte SSL-Unterstützung. Wenn Sie es verwenden, es hinter nginx gesetzt, die Anfrage über HTTPS erhalten würde, aber Proxy in Ihrer GEVENT App nicht-verschlüsselten HTTP.

Die gevent.pywsgi Modul hat die SSL-Unterstützung eingebaut und verfügt über eine kompatible Schnittstelle. Stellen Sie die keyfile und certfile Argumente, um den Server verwenden SSL zu machen. Hier ein Beispiel: 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()

Ich würde den HTTP-Server befassen sich mit dem ssl Transport lassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top