Как включить https в Django, используя уже существующий ключ
Для генерации сертификатов я использую команду openssl. Я запускаю свое приложение django на docker, используя nginx proxy. Я новичок в этом, поэтому я прочитал несколько статей для запуска моего приложения. Вот мой defaulf.conf:
upstream rancher {
server api_django:8080;
}
map $http_upgrade $connection_upgrade {
default Upgrade;
'' close;
}
server {
listen 443 ssl http2;
server_name <my domain name> www.<my domain name>;
ssl_certificate /etc/ssl/private/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://rancher;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 900s;
}
}
server {
listen 80;
server_name <my domain name> www.<my domain name>;
return 301 https://$server_name$request_uri;
}
В файле seting.py я установил такие параметры:
CSRF_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
Мой docker-compose.yml
version: '3.7'
services:
api_django:
volumes:
- static:/static
env_file:
- .env
build:
context: .
ports:
- "8000:8000"
nginx:
build: ./nginx
volumes:
- static:/static
- /root/docker_ssl_proxy:/etc/ssl/private
ports:
- "80:80"
- "443:443"
depends_on:
- api_django
volumes:
static:
Когда я запускаю свой docker-compose ничего не меняется