Django + nginx (с docker): ошибочные перенаправления /admin

Так,

У меня есть проект, в котором есть Docker-развертывание веб-сайта с Nginx, Django, обслуживаемый с помощью Gunicorn + статические файлы, и фронтенд Vue.js (компилируется в статические файлы).

Проблема:

Когда я пытаюсь получить доступ к интерфейсу администратора Django по адресу http://localhost:8100/admin, меня перенаправляют на https://localhost/admin/, что, очевидно, не удается.

Что я действительно хочу:

Во-первых, чтобы это работало. Но я не хочу жестко кодировать имя сайта (потому что это проект с открытым исходным кодом), я не хочу принудительно использовать SSL, потому что у меня есть сервер, на котором я собираюсь развернуть это за другим обратным прокси, так что сайт будет некоторым поддоменом на моем сервере, под моими сертификатами. Поэтому я хочу, чтобы и Nginx, и слой Django были настолько "тупыми", насколько это возможно.

Для помощи в отладке:

docker-compose.yaml:

version: "3"

services:
  reverse-proxy:
    image: nginx:stable
    ports:
      - 8100:80
    volumes:
      - frontend_data:/frontend/
      - backend_data:/backend/
      - ./nginx:/etc/nginx/conf.d
    depends_on:
      - backend
  frontend:
    # ....
  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    entrypoint: ./entrypoint.sh
    stop_signal: SIGINT
    depends_on:
      - db
    volumes:
      - backend_data:/backend/
  db:
    image: postgres:13-bullseye
    volumes:
      - postgres_data:/var/lib/postgresql/data/

volumes:
    # ...

Конфигурация Nginx:

upstream backend_server {
    server backend:8000;
}

server {
    listen 80;
    location /api {
        proxy_pass http://backend_server/api;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
    location /openapi {
        proxy_pass http://backend_server/openapi;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
    location /admin {
        proxy_pass http://backend_server/admin;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
    location /static {
        alias /backend/static_root/;
    }
    location /media {
        alias /backend/media_root/;
    }
    location / {
        try_files $uri $uri/ /index.html;
        root /frontend/dist;
    }
}

Полный проект в этом месте (github) .

Вернуться на верх