web-dev-qa-db-fra.com

Django + uWSGI + Nginx + SSL - demande de configuration de travail (accent sur SSL)

Quelqu'un at-il une configuration de travail pour ces quatre?

- Django
- uWSGI
- Nginx
- SSL 

La principale question est de savoir comment configurer correctement SSL pour cela? J'ai beaucoup cherché sur Google et je n'arrive toujours pas à le faire fonctionner. J'ai une configuration de travail pour http avec unix sockets, mais c'est tout ce que j'ai pu obtenir.

Il y a quelques autres réponses publiées, mais ce sont principalement des extraits de code et non une configuration complète.

13
Aaron Lelevier
server {
    listen          80;
    server_name     example.com;
    rewrite ^/(.*)  https://example.com/$1 permanent;
}

server {
    listen          443 ssl;
    server_name     example.com;
    access_log      /var/log/nginx/example.com_access.log combined;
    error_log       /var/log/nginx/example.com_error.log error;

    ssl_certificate         /etc/nginx/ssl/example-unified.crt;
    ssl_certificate_key     /etc/nginx/ssl/example.key;

    location /static/ {
        alias /webapps/example/static/;
    }

    location /media/ {
        alias /webapps/example/media/;
    }

    location / {
        proxy_pass         http://localhost:8000/;
        proxy_redirect     off;

        proxy_set_header   Host              $http_Host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    }

}

C'est la configuration de base de nginx qui fonctionnera avec SSL et transmettra les demandes à uwsgi s'exécutant sur le port 8000 (vous pouvez le changer en socket si vous le souhaitez).

Pour les paramètres SSL avancés, vérifiez THIS .

12
Domen Blenkuš

Je suis nouveau à nginx, uwsgi et ssl. Ici partage mes tests nginx et uwsgi config.

Fondamentalement, le déploiement de Django ne prend en charge que SSL/HTTPS en quatre étapes.

  1. Installer un certificat SSL
    • utilisez openssl pour générer server.crt et server.key

      openssl req -new -x509 -nodes -out server.crt -keyout server.key

  2. Config nginx.conf et uwsgi.ini sous le projet Django
    • Définissez nginx.conf (désolé, la disposition est bizarre dans un bloc de texte, alors j'insère une image ici.)  enter image description here
    • un lien symbolique vers ce fichier à partir de/etc/nginx/sites-enabled afin que nginx puisse le voir

      Sudo ln -s /path/to/Django/example_nginx.conf/etc/nginx/sites-enabled /

    • config uwsgi.ini sous le projet Django  enter image description here
  3. Config settings.py

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    SECURE_SSL_REDIRECT = True
    
  4. Redémarrez nginx et uwsgi

    • redémarrer nginx

      Sudo /etc/init.d/nginx restart

    • lancer uwsgi

      uwsgi --ini /path/to/Django/example_uwsgi.ini

1
lily LIU