web-dev-qa-db-ja.com

Django + uWSGI + Nginx + SSL-動作する構成のリクエスト(SSLに重点を置いています)

誰かがこれらの4つの作業構成を持っていますか?

- Django
- uWSGI
- Nginx
- SSL 

主な質問は、これに対してSSLを正しく設定する方法です。私はたくさんグーグルで検索しましたが、それでも動作させることができません。 httpunix socketsのワーキングセットがありますが、それは私が得ることができる限りです。

他にもいくつかの回答が投稿されていますが、それらはほとんどがコードスニペットであり、構成全体ではありません。

15
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;
    }

}

これはSSLで動作する基本的なnginx構成であり、ポート8000​​で実行されているuwsgiにリクエストを転送します(必要に応じてこれをソケットに変更できます)。

詳細なSSL設定については、 [〜#〜] this [〜#〜] を確認してください。

12
Domen Blenkuš

私はnginx、uwsgi、sslを初めて使用します。ここで私のテストnginxとuwsgi設定を共有します。

基本的に、デプロイするには4つのステップがありますDjango SSL/HTTPSのみをサポートします。

  1. SSL証明書を設定します
    • opensslを使用してserver.crtとserver.key を生成します

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

  2. Djangoプロジェクトの下でngi​​nx.confとuwsgi.iniを構成します
    • Nginx.confを設定します(申し訳ありませんが、テキストブロックのレイアウトがおかしいので、ここに画像を挿入します。) enter image description here
    • / etc/nginx/sites-enabledからこのファイルへのシンボリックリンク。nginxがファイルを認識できるようにします

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

    • config uwsgi.ini under Django project 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

1
lily LIU