Вопрос

У меня есть приложение WSGI, которое я хотел бы разместить за SSL. Мой сервер WSGI завещание.

Что бы хороший способ служить приложению через SSL в этом случае?

Это было полезно?

Решение

Похоже, что Gevent теперь имеет модуль SSL. Если у вас есть веб-сервер, реализованный на вершине Gevent, я представляю, что вы можете изменить его, чтобы обернуть входящие соединения с помощью класса SSL-сокета Module, прежде чем передавать его на обработчики HTTP.

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

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

В противном случае вы всегда можете использовать старый добрый добрый Apache + Mod_WSGI для обслуживания вашего приложения WSGI.

Другие советы

То Gevent.wsgi. Модуль не имеет встроенной поддержки SSL. Если вы используете его, поместите его за NGINX, который получит запрос через https, но прокси их в приложении Gevent, используя не зашифрованные HTTP.

То 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()

Я бы позволил использовать HTTP-сервер с транспортировкой SSL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top