.png)
Итак, моя текущая настройка следующая: я использую 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;
}