誰かがこれらの4つの作業構成を持っていますか?
- Django
- uWSGI
- Nginx
- SSL
主な質問は、これに対してSSL
を正しく設定する方法です。私はたくさんグーグルで検索しましたが、それでも動作させることができません。 http
とunix sockets
のワーキングセットがありますが、それは私が得ることができる限りです。
他にもいくつかの回答が投稿されていますが、それらはほとんどがコードスニペットであり、構成全体ではありません。
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 [〜#〜] を確認してください。
私はnginx、uwsgi、sslを初めて使用します。ここで私のテストnginxとuwsgi設定を共有します。
基本的に、デプロイするには4つのステップがありますDjango SSL/HTTPSのみをサポートします。
openssl req -new -x509 -nodes -out server.crt -keyout server.key
構成settings.py
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
Nginxとuwsgiを再起動します
Sudo/etc/init.d/nginx再起動
uwsgi --ini /path/to/Django/example_uwsgi.ini