Итак, моя текущая настройка выглядит следующим образом: я использую докер (установка без рута) и хочу использовать Криптпад (который использует Node.js) с Nginx в качестве обратного прокси-сервера (отказ от ответственности: я никогда раньше не работал с Nginx).
Cryptpad и Nginx работают в отдельных контейнерах. Для обслуживания статических файлов я создал том, в котором находятся все статические файлы из Cryptpad и который смонтирован в контейнере Nginx (только для чтения). Проблема в том, что некоторое содержимое не может быть обслужено таким образом: большие blob-файлы будут сохранены во внешнем каталоге, который доступен только из Cryptpad-Container (у меня на это есть свои причины).
Поэтому я попытался сказать Nginx, чтобы proxy_pass запросил эти файлы на Node-Server Cryptpad, но я не могу понять, как определить это перенаправление.
Моя конфигурация:
- имя контейнера Nginx: nginx
- имя Cryptpad-Container: cryptpad
- порт Node-Server: 3000
- оба контейнера подключены к одной и той же (настраиваемой) мостовой сети (и поэтому доступны по своим именам контейнеров)
Nginx-Config для сервера (сокращенно до соответствующего раздела; полный код адаптирован из здесь)
[...]
location ^~ /block/ {# измененное местоположение блока для проверки прокси-сервера (доступ к нему проще, чем к большому двоичному объекту)
add_header Cache-Control max-age=0;
#try_files $uri =404;# оригинальный код
try_files http://cryptpad:3000/$request_uri =409;# произвольный код ошибки для отличия от обычных ошибок
}
[...]
location @node {# используется для проксирования всех необработанных местоположений к узлу
прокси_пароль http://cryptpad:3000;
}
try_files /www/$uri /www/$uri/index.html /customize/$uri @node;
Но всякий раз, когда осуществляется доступ к /block/, сервер возвращает 409, поэтому перенаправление не работает.
Я также пробовал это с proxy_pass http://cryptpad:3000/$request_uri/;
или же прокси_пароль http://cryptpad:3000;
(что привело к 404) и try_files @node = 409;
.
Итак, кто-нибудь знает, как заставить это внутреннее перенаправление работать или, по крайней мере, как отслеживать трафик между двумя контейнерами?