Задать вопрос
@dimash07

Как правильно настроить Docker, Nginx, Django?

Доброго времени суток! Имеются несколько сайтов на django+nginx, все работает под docker.

Примерный docker-compose.yml для каждого сайта:
..............................
web:
    build: ./project
    entrypoint: /home/app/web/entrypoint.sh
    expose:
      - 8000
..............................
nginx:
    build: ./nginx
    volumes:
      - media_volume:/home/app/web/media
      - ./project/static/:/home/app/web/static
      - ./project/.well-known/:/home/app/web/.well-known
    ports:
      - 8081:80
    depends_on:
      - web
    env_file:
      - ./.env
..............................


Конфиг nginx-а
upstream django_project {
    server web:8000;
}

server {

    listen 80;
    server_name ${SERVER_NAME};

    location / {
        proxy_pass http://django_project;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }


И таких сайтов несколько. Nginx каждого сайта распределен по портам (8081, 8082, 8083). И вне докреа уже в системе установлен глобальный nginx, который проксирует запросы на докеровские nginx-ы, ну и работает с SSL:
server_name $host;

location / {
	proxy_pass http://localhost:8081;
	proxy_set_header Host $host;
}


Все работает ОК, вот только единственная проблема, при получении absolute_url в django, возвращается полный урл, но только с http. Как сделать так, чтобы был https? Неужто надо будет с внутренних nginx-ов прокидывать путь к ключам и там уже настраивать https?
  • Вопрос задан
  • 494 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
karabanov
@karabanov Куратор тега Docker
Системный администратор
Добавь заголовков. В частности пробрасывай схему через X-Forwarded-Proto:

location / {
        proxy_pass http://localhost:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

Ну и по ссылке представленной предыдущим оратором написано, как обработать этот заголовок.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы