Tenemos un par de Django configuraciones que ir a través de un proxy (Apache y Nginx) que, finalmente, hacer su camino a la real Django en tiempo de ejecución.

Necesitamos tener HTTPS extremo a extremo, incluso una vez que está en nuestra red. Hemos estado revisando Gunicorn debido a su éxito y de rendimiento en nuestras otras configuraciones, pero necesario para poner a prueba con «HTTPS» en de extremo a extremo para ser coherente.

Nuestra topología es como tal:

https://foo.com -> [a la vista del Público proxy] -> (https) -> [internal server https://192…:8001]

¿Cómo configurar Gunicorn para escuchar en HTTPS con un certificado autofirmado?

InformationsquelleAutor dmyung | 2011-09-13

2 Comentarios

  1. 67

    Gunicorn ahora es compatible con SSL, a partir de la versión 17.0. Usted puede configurar para que se escuche en https como este:

    $ gunicorn --certfile=server.crt --keyfile=server.key test:app
    

    Si se utiliza --bind para escuchar en el puerto 80, recuerde cambiar el puerto 443 (el puerto por defecto para las conexiones HTTPS). Por ejemplo:

    $ gunicorn --certfile=server.crt --keyfile=server.key --bind 0.0.0.0:443 test:app
    
    • Puede que me apunte en los documentos pertinentes de cómo hacer esto? Estoy implementando en heroku, así que estoy seguro de lo que mi servidor».crt», por ejemplo.
    • Si va a implementar en heroku no hay necesidad de soporte SSL ti mismo – heroku lo hace por usted. Consulte sus docs para obtener ayuda. Usted tendrá que configurar gunicorn para honrar a heroku seguro de configuración de cabecera. Yo uso algo como esto en mi archivo de configuración: forwarded_allow_ips = '*' y secure_scheme_headers = {'X-FORWARDED-PROTO': 'https',}
    • ¿Cuál es la test:app parte de la final?
    • Ejecutando este me devuelve AttributeError: 'NoneType' object has no attribute 'uri'
    • Exactamente lo que necesitaba! He añadido estos valores para mi gunicorn_start.bash archivo y reinicia supervisor. Ahora todo funciona bien.
    • ¿cómo sabes que el tráfico es segura entre todos los saltos a la vista del público <–> servidor de aplicaciones?

  2. 17

    Masivamente respuesta tardía, pero para cualquier otra persona que viene a través de esto, hay otra opción de utilizar nginx como el «[a la vista del Público proxy]» arriba.

    Configurar nginx para manejar el entrante tráfico SSL en el puerto 443, y, a continuación, proxy_pass a gunicorn en un puerto interno. El tráfico externo está cifrado, y el tráfico entre nginx y gunicorn no se expone de todos modos. Esto me parece muy fácil de gestionar.

    • ¿Cómo sabe que no está expuesto?
    • Porque se unen gunicorn a 127.0.0.1, de tal manera que sólo localhost puede acceder a ella

Dejar respuesta

Please enter your comment!
Please enter your name here