У меня проблема с портом Nginx по умолчанию 80, когда я загружаю медиафайлы

Я загружаю файл на сервер методом post, но он появляется на стандартном порту 80. Однако я запускаю Nginx на порту 8001. Вот что я вижу, когда проверяю свою конечную точку с портом 8001.

Файл выглядит как порт 80.

Но я проверяю с портом 8000

Мой файл nginx/default.conf :

upstream django_asgi {
    server django_asgi:8000;
}

map $http_upgrade $connection_upgrade {
  default upgrade;
    '' close;
}

server {
    client_max_body_size 100M;
    location / {
        try_files $uri @proxy_to_app;
    }
    location @proxy_to_app {
        proxy_pass http://django_asgi;
        client_max_body_size 100M;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 3600;
        proxy_connect_timeout 3600;
        proxy_send_timeout 3600;
        keepalive_timeout 3600;


        proxy_redirect off;
        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-Host $server_name;
    }
    location /static/ {
        alias /code/staticfiles/;
    }
    location /media/ {
        alias /code/media/;
    }
}

Мой Dockerfile :

FROM python:3.8

ENV PYTHONUNBUFFERED 1
ENV REDIS_HOST "redis"
RUN mkdir /code
RUN mkdir code/staticfiles
RUN mkdir code/mediafiles
WORKDIR /code

RUN pip install --upgrade pip
RUN pip install psycopg2

COPY requirements.txt /code/
RUN pip install uwsgi
RUN apt-get update && apt-get install -y tdsodbc unixodbc-dev

RUN pip install -r requirements.txt
ADD . /code/

RUN python manage.py collectstatic --no-input
RUN python manage.py migrate --no-input

Мой файл docker-compose.yml :

version: "3.5"

services:
  django_asgi:
    container_name: django_asgi
    build: .
    command: daphne -b 0.0.0.0 -p 8000  core.asgi:application
    env_file:
      - .env
    volumes:
      - .:/code
    restart: always
    ports:
    - "8000:8000"
    networks: 
      - redisnet
      - djangonet
    links:
      - redis

  redis:
    image: redis:latest
    restart: always
    networks: 
      - redisnet
      - djangonet

  nginx:
    container_name: django_nginx
    image: nginx:1.15.0
    depends_on:
      - django_asgi
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - static_volume:/code/staticfiles
      - media_volume:/code/media
    networks:
      - djangonet
    restart: always
    ports:
      - "8001:80"
  
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

volumes:
  static_volume:
  media_volume:

networks: 
  redisnet:
    driver: bridge
  djangonet:
    driver: bridge

Мои структуры статических и медиа файлов settings.py :

STATIC_URL = 'static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
STATIC_ROOT = BASE_DIR / "staticfiles"

MEDIA_URL = "/media/"
MEDIA_ROOT = BASE_DIR / "media"

Я проверил структуру медиа и статических файлов, думаю, что они одинаковые. Статические файлы работают с сервером Nginx, а медиа файлы - нет.

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