Nginx: невозможно проксировать некоторые пути к серверу Node.js (между контейнерами docker dwo)

Nginx: невозможно проксировать некоторые пути к серверу Node.js (между контейнерами docker dwo)

Итак, моя текущая настройка следующая: я использую Docker (установка без прав root) и хочу использоватьКриптпад(который использует Node.js) с Nginx в качестве обратного прокси (отказ от ответственности: я никогда раньше не работал с Nginx). Cryptpad и Nginx работают в отдельных контейнерах. Для обслуживания статических файлов я создал том, в котором находятся все статические файлы из Cryptpad, и который смонтирован в Nginx-Container (только для чтения). Проблема в том, что часть содержимого не может быть обслужена таким образом: большие blob-файлы будут сохранены во внешнем каталоге, который доступен только из Cryptpad-Container (у меня есть на это свои причины). Поэтому я попытался указать Nginx proxy_pass запрос на эти файлы на Node-Server Cryptpad, но я не могу понять, как определить это перенаправление.

Моя конфигурация:

  • имя Nginx-контейнера: nginx
  • имя Cryptpad-Container: cryptpad
  • порт Node-Server: 3000
  • оба контейнера подключены к одной и той же (пользовательской) мостовой сети (и поэтому доступны по именам своих контейнеров)

Конфигурация Nginx для сервера (сокращена до соответствующего раздела; полный код адаптирован изздесь)

[...]
location ^~ /block/ {# modified block location to test proxy (is accessed more easily than blob)
    add_header Cache-Control max-age=0;

    #try_files $uri =404;# original code
    try_files http://cryptpad:3000/$request_uri =409;# arbitrary error code to differentiate from normal errors
}
[...]
location @node {# used to proxy all unhandled locations to node
    proxy_pass http://cryptpad:3000;
}

try_files /www/$uri /www/$uri/index.html /customize/$uri @node;

Но всякий раз, когда происходит обращение к /block/, сервер возвращает 409, поэтому перенаправление не работает. Я также пробовал с proxy_pass http://cryptpad:3000/$request_uri/;or proxy_pass http://cryptpad:3000;(что привело к 404) и try_files @node =409;.

Кто-нибудь знает, как заставить работать это внутреннее перенаправление или хотя бы как отслеживать трафик между двумя контейнерами?

решение1

После еще нескольких попыток я нашел конфигурацию, которая работала: я просто скопировал остальные строки из proxy_passes из примера, и теперь результирующее определение для /block/ выглядит так:

location ^~ /block/ {
    add_header Cache-Control max-age=0;

    proxy_pass http://cryptpad:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_hide_header Cross-Origin-Resource-Policy;
    #add_header Cross-Origin-Resource-Policy cross-origin;
    proxy_hide_header Cross-Origin-Embedder-Policy;
    #add_header Cross-Origin-Embedder-Policy require-corp;
}

Связанный контент