Django на Nginx обслуживание stati c файлов, но не мультимедийных файлов, когда отладка имеет значение False - PullRequest
0 голосов
/ 05 февраля 2020

Мое django приложение работало должным образом в рабочей среде с отладкой, установленной на True, когда я выключил его, приложение больше не обслуживает медиафайлы (загруженные пользователями), но файлы stati c обслуживаются правильно.

вот мои настройки:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '../static/')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads', 'media')
MEDIA_URL = '/uploads/media/'
DOCUMENTS_ROOT = os.path.join(BASE_DIR, 'uploads', 'media', 'documents')

вот мои базовые URL:

urlpatterns = [
              path('i18n/', include('django.conf.urls.i18n')),
              path('auth/', include("django.contrib.auth.urls")),
              path('traveller/', include('travellers.urls')),
              path('service/', include('drivers.urls')),
              path('admin/', include("management.urls")),
              path('events/', include('events.urls')),
          ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

вот моя Nginx конфигурация сайта:

upstream app_server{
server unix:/home/envs/bus_env/run/bus.sock fail_timeout=10;
}
server {
listen 80;

# add here the ip address of your server
# or a domain pointing to that ip (like example.com or www.example.com)
server_name ***.***.***.***;

keepalive_timeout 20;
client_max_body_size 4G;

access_log /home/envs/bus_env/logs/nginx-access.log;
error_log /home/envs/bus_env/logs/nginx-error.log;

location /static/ {
    alias /home/envs/bus_env/static/;
}

location /media/ {
    # media files, uploaded by users
    autoindex on;
    alias /home/envs/bus_env/backend/uploads/media/;
}


location / {
    try_files $uri @proxy_to_app;
}

location @proxy_to_app {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  proxy_pass http://app_server;
}
}

вот журнал доступа nginx для запроса изображения профиля, например:

"GET /uploads/media/staff/profile_pictures/viber_image_V2JdnkG.jpg HTTP/1.1" 404 799

это моя иерархия папок для загрузок:

.
└── media
    ├── documents
    │   ├── drivers
    │   └── staff
    │       ├── 10
    │       ├── 11
    │       ├── 12
    │       ├── 14
    │       ├── 15
    │       ├── 16
    │       ├── 17
    │       ├── 18
    │       ├── 19
    │       ├── 20
    │       ├── 21
    │       ├── 4
    │       ├── 5
    │       ├── 8
    │       ├── 9
    │       ├── amine
    │       ├── hello
    │       ├── sdfsdg
    │       └── wassim
    ├── drivers
    │   └── profile_pictures
    ├── staff
    │   └── profile_pictures
    └── travellers
        └── profile_pictures

я пробовал так много вещей, и видел столько потоков, как ручная настройка переменной media root, изменение псевдонима на root, удаление автоиндекса ... кажется, ничего не работает.

1 Ответ

0 голосов
/ 06 февраля 2020

Измените конфигурацию мультимедиа, как показано ниже на nginx

location /uploads/media/ {
    # media files, uploaded by users
    autoindex on;
    alias /home/envs/bus_env/backend/uploads/media/;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...