У меня проблема с портом 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, а медиа файлы - нет.