Nginx: no se pueden representar algunas rutas al servidor Node.js (entre dos contenedores acoplables)

Nginx: no se pueden representar algunas rutas al servidor Node.js (entre dos contenedores acoplables)

Entonces mi configuración actual es la siguiente: estoy usando Docker (instalación sin raíz) y quiero usarteclado(que usa Node.js) con Nginx como proxy inverso (descargo de responsabilidad: nunca antes trabajé con Nginx). Cryptpad y Nginx se ejecutan en contenedores separados. Para servir los archivos estáticos, creé un volumen donde residen todos los archivos estáticos de Cryptpad y que está montado en Nginx-Container (solo lectura). El problema es que algunos contenidos no se pueden servir de esta manera: los archivos blob grandes se guardarán en un directorio externo al que solo se puede acceder desde Cryptpad-Container (tengo mis razones para esto). Así que intenté decirle a Nginx que pasara por proxy la solicitud de estos archivos al servidor de nodo de Cryptpad, pero no puedo entender cómo definir esta redirección.

Mi configuración:

  • nombre del contenedor Nginx: nginx
  • nombre del contenedor Cryptpad: cryptpad
  • puerto de Nodo-Servidor: 3000
  • ambos contenedores están conectados a la misma red puente (personalizada) (y por lo tanto son accesibles por sus nombres de contenedores)

Nginx-Config para el servidor (abreviado a la sección relevante; código completo adaptado deaquí)

[...]
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;

Pero cada vez que se accede a /block/, el servidor devuelve 409, por lo que la redirección no funcionó. También lo probé con proxy_pass http://cryptpad:3000/$request_uri/;o proxy_pass http://cryptpad:3000;(lo que resultó en un 404) y try_files @node =409;.

Entonces, ¿alguien sabe cómo hacer que funcione esta redirección interna o al menos una forma de monitorear el tráfico entre los dos contenedores?

Respuesta1

Después de intentarlo un poco más, encontré una configuración que funcionó: simplemente copié las otras líneas de proxy_passes del ejemplo y la definición resultante para /block/ luce así

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;
}

información relacionada