Джанго + на uwsgi + nginx в + с SSL - запрос на рабочую конфигурацию (акцент на SSL)

есть ли у кого-нибудь рабочая конфигурация для этих четырех?

- Django
- uWSGI
- Nginx
- SSL 

основной вопрос заключается в том, как правильно настроить SSL для этого? Я много гуглил и все еще не могу заставить его работать. У меня есть рабочая настройка для http С unix sockets, но это все, что я мог получить.

есть некоторые другие ответы, но они в основном являются фрагментами кода, а не всей конфигурацией.

2 ответов


server {
    listen          80;
    server_name     example.com;
    rewrite ^/(.*)  https://example.com/ 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;
    }

}

это базовая конфигурация nginx, которая будет работать с SSL и будет пересылать запросы на uwsgi, работающий на порту 8000 (вы можете изменить это на сокет, если хотите).

для расширенных настроек SSL проверьте этой.


Я новичок в nginx, uwsgi и ssl. Здесь делится моим тестированием nginx и uwsgi config.

в основном, есть четыре шага для развертывания Django поддерживает только SSL / HTTPS.

  1. настройка SSL-сертификата
    • используйте openssl для создания сервера.ЭЛТ и сервер.ключ

      сервер openssl req-new-x509-nodes-out.сервер crt-keyout.ключ

  2. конфигурация nginx.conf и uwsgi.ini под Django проект
    • установить nginx.conf (извините, макет странный в текстовом блоке, поэтому я вставляю изображение здесь.) enter image description here
    • символическая ссылка на этот файл из /etc/nginx / sites-включена, чтобы nginx мог ее видеть

      sudo ln-s/path/to/django / example_nginx.conf/etc/nginx/сайты-включено/

    • конфигурация uwsgi.ini в рамках проекта django enter image description here
  3. конфиг settings.py

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    SECURE_SSL_REDIRECT = True
    
  4. перезапустить nginx и uwsgi

    • перезапустите nginx

      sudo/etc / init.перезапуск d/nginx

    • запустить на uwsgi

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