Nginx alias : где находится псевдоним (3 контейнера и обратный прокси)
Я пытаюсь заставить работать одностраничное приложение с django/wagtail и react.
Но в данный момент я обслуживаю содержимое django через restframework и запросы на media/ и djangostatic/ не работают.
Я настроил nginx на обслуживание /media и /djangostatic для псевдонимов /app/media и /app/static, но это не работает должным образом.
Вот файл nginx.conf:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://172.20.128.3:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20M;
}
location /wagtail {
proxy_pass http://172.20.128.2:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Script-Name /wagtail;
client_max_body_size 20M;
}
location /djangostatic/ {
alias /app/static/;
}
location /media/ {
alias /app/media/;
}
}
При запросе страницы, нуждающейся в /djangostatic, я получаю ошибку :
2022/06/12 08:30:10 [error] 22#22: *2 open() "/app/static/wagtailadmin/js/vendor/jquery.datetimepicker.js" failed (2: No such file or directory), client: 172.20.0.1, server: localhost, request: "GET /djangostatic/wagtailadmin/js/vendor/jquery.datetimepicker.js?v=021047c1 HTTP/1.1", host: "localhost", referrer: "http://localhost/wagtail/cms-admin/login/?next=/wagtail/cms-admin/"
Итак, псевдоним, похоже, работает (он заменяется на /app/media), но он не открывает файл. Я проверил контейнер внутреннего сервера, и файл существует.
Итак, мой вопрос прост: на каком сервере псевдоним вступает в силу? На самом деле у меня три контейнера docker: один запускает nginx, один на 172.20.128.3:3000 запускает frontend и один на 172.20.128.2:8000 запускает backend. С обратным прокси, установленным в nginx.conf, запрос, переданный на 172.20.128.2:8000/media, попадает в папку /app/media этого сервера, или он ищет на сервере nginx /app/media, или псевдоним должен происходить на любом сервере (backend, frontend и nginx)?
Почему open не работает на моей конфигурации?