Domanda

Ho un'applicazione WSGI che vorrei posto dietro SSL. Il mio server WSGI è gevent .

Che cosa sarebbe un buon modo per servire l'applicazione tramite SSL in questo caso essere?

È stato utile?

Soluzione

Sembra che gevent ora ha un modulo SSL. Se si dispone di un server web implementato in cima gevent, immagino si potrebbe modificarlo per avvolgere le connessioni in entrata con classe Socket SSL che del modulo prima di passarlo ai gestori HTTP.

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

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

In caso contrario, si può sempre utilizzare il buon vecchio apache + mod_wsgi per servire il vostro WSGI app.

Altri suggerimenti

Il gevent.wsgi modulo non ha il supporto integrato SSL. Se lo si usa, metterlo dietro nginx che avrebbe ricevuto richiesta tramite HTTPS ma li incaricato alla propria applicazione utilizzando gevent non crittografato HTTP.

Il gevent.pywsgi modulo ha integrato il supporto SSL e dispone di un'interfaccia compatibile. Impostare gli argomenti keyfile e certfile per rendere l'uso di SSL server. Ecco un esempio: 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()

avrei lasciato l'affare server HTTP con il trasporto ssl.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top