.png)
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;
}