.png)
Mein aktuelles Setup ist also das folgende: Ich verwende Docker (rootless install) und möchteKryptopad(das Node.js verwendet) mit Nginx als Reverse-Proxy (Haftungsausschluss: Ich habe noch nie zuvor mit Nginx gearbeitet). Cryptpad und Nginx laufen beide in separaten Containern. Um die statischen Dateien bereitzustellen, habe ich ein Volume erstellt, in dem sich alle statischen Dateien von Cryptpad befinden und das im Nginx-Container gemountet ist (nur lesen). Das Problem ist, dass einige Inhalte nicht auf diese Weise bereitgestellt werden können: Die großen Blob-Dateien werden in einem externen Verzeichnis gespeichert, auf das nur vom Cryptpad-Container aus zugegriffen werden kann (ich habe meine Gründe dafür). Also habe ich versucht, Nginx anzuweisen, die Anforderung für diese Dateien per Proxy an den Node-Server von Cryptpad weiterzuleiten, aber ich kann nicht herausfinden, wie ich diese Umleitung definieren kann.
Meine Konfiguration:
- Name des Nginx-Containers: nginx
- Name des Cryptpad-Containers: cryptpad
- Port des Node-Servers: 3000
- beide Container sind mit demselben (benutzerdefinierten) Bridge-Netzwerk verbunden (und daher über ihre Container-Namen zugänglich)
Die Nginx-Konfiguration für den Server (auf den relevanten Abschnitt gekürzt; vollständiger Code angepasst vonHier)
[...]
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;
Aber immer wenn auf /block/ zugegriffen wird, gibt der Server 409 zurück, sodass die Weiterleitung nicht funktioniert hat. Ich habe es auch mit proxy_pass http://cryptpad:3000/$request_uri/;
oder proxy_pass http://cryptpad:3000;
(was zu einer 404 führte) und versucht try_files @node =409;
.
Weiß also jemand, wie diese interne Umleitung funktioniert oder zumindest, wie man den Verkehr zwischen den beiden Containern überwachen kann?
Antwort1
Nach einigen weiteren Versuchen habe ich eine Konfiguration gefunden, die funktioniert: Ich habe einfach die anderen Zeilen von proxy_passes aus dem Beispiel kopiert und so sieht die resultierende Definition für /block/ aus
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;
}