OPNsense Forum
International Forums => German - Deutsch => Topic started by: shb256 on November 21, 2018, 09:29:04 am
-
Hallo,
ich möchte Nextcloud mit onlyoffice hinter opnsense betreiben.
Die grundsätzliche Einrichtung von nginx ist klar.
hier ist das beispiel von onlyoffice für einen reversen nginx proxy
#Use this example for the proxy document server running at 'backendserver-address'
# into the virtual directory 'documentserver-virtual-path'.
upstream docservice {
server backendserver-address;
}
map $http_x_forwarded_proto $the_scheme {
default $http_x_forwarded_proto;
"" $scheme;
}
map $http_x_forwarded_host $the_host {
default $http_x_forwarded_host;
"" $host;
}
map $http_upgrade $proxy_connection {
default upgrade;
"" close;
}
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host/documentserver-virtual-path;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
server {
listen 0.0.0.0:80;
listen [::]:80 default_server;
server_tokens off;
location /documentserver-virtual-path/ {
proxy_pass http://docservice/;
proxy_http_version 1.1;
}
}
genauer geht es mir um diesen Abschnitt:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host/documentserver-virtual-path;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
so sieht meine location section aus
if ($scheme != "https") {
return 302 https://$host$request_uri;
}
autoindex off;
http2_push_preload off;
proxy_set_header Host $host;
proxy_set_header X-TLS-Cipher $ssl_cipher;
proxy_set_header X-TLS-Protocol $ssl_protocol;
proxy_set_header X-TLS-SNI-Host $ssl_server_name;
# proxy headers for backend server
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://upstream50c9cb5f9daa4878ab3cf696f9e0416d;
damit sind meiner Meinung nach alle Punkte außer
proxy_set_header X-Forwarded-Host $the_host/documentserver-virtual-path;
mit abgebacken
Als Fehlermeldung erhalte ich im Browser
ERR_TOO_MANY_REDIRECTS
Was es bedeutet ist klar, allerdings ist mir nicht klar wie es lösen kann. Ich denke es liegt am Header für X-Forwarded-Host. Gibt es die Möglichkeit zusäzlicher header optionen hinzuzufügen
Danke
shb
-
so sieht meine location section aus
if ($scheme != "https") {
return 302 https://$host$request_uri;
}
autoindex off;
http2_push_preload off;
proxy_set_header Host $host;
proxy_set_header X-TLS-Cipher $ssl_cipher;
proxy_set_header X-TLS-Protocol $ssl_protocol;
proxy_set_header X-TLS-SNI-Host $ssl_server_name;
# proxy headers for backend server
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://upstream50c9cb5f9daa4878ab3cf696f9e0416d;
Schaut schon mal ganz gut aus, wobei du für Connection und Upgrade noch das Websocket-Feature (Advanced Option) dazuschalten solltest:
https://github.com/ONLYOFFICE/document-server-proxy/blob/master/nginx/minimal.conf (https://github.com/ONLYOFFICE/document-server-proxy/blob/master/nginx/minimal.conf)
damit sind meiner Meinung nach alle Punkte außer
proxy_set_header X-Forwarded-Host $the_host/documentserver-virtual-path;
mit abgebacken
Den solltest du auch nicht brauchen, da beim nginx-Plugin der originale "Host"-Header erhalten bleibt. Das ist eher ein Problem wenn der Proxy den Header ändern würde.
Als Fehlermeldung erhalte ich im Browser
ERR_TOO_MANY_REDIRECTS
Browser wird im Kreis geschickt.Würde hier mal curl zum testen nehmen (-I) und auch mal den Request anschauen, der beim Server ankommt. Ggf. fehlt irgendwas oder der Server will irgendeine spezielle Umleitung (HTTP <-> HTTPS o. Ä.)
Was es bedeutet ist klar, allerdings ist mir nicht klar wie es lösen kann. Ich denke es liegt am Header für X-Forwarded-Host. Gibt es die Möglichkeit zusäzlicher header optionen hinzuzufügen
Danke
shb
Derzeit nicht, notfalls musst du die Datei location.conf patchen. Die Zusatzheader waren bis vor kurzem nicht möglich (und sind es immer noch nicht), weil der Core die Funktionalität nicht bietet, Key-Value-Daten zu verwalten. Den notwendingen Pull-Request habe ich schon gemacht, aber es ist noch nicht klar, ob die Änderung im nächsten Update kommen wird - daher wird vermutlich auch nginx 1.4, welches diese Features nutzt, ein devel-only release.
-
Danke für die Unterstützung.
CURL -I hat 302 angezeigt. ich habe jetzt einfach nochmal den docker container gelöscht und den nginx neu eingerichtet.
Jetzt läuft es.
shb
-
Also in dem Fall ein Fehler beim Einrichten des Containers?
Falls es wen interessiert, währe es dennoch nützlich, wenn du den Fehler noch dazu schreibst.
-
Also wo genau der Fehler lag kann ich leider nicht genau sagen.
Alles einfach nochmal gelöscht
Onlyoffice starte ich mit
docker run -i -t -d -p 8181:80 --restart=always onlyoffice/documentserver
Opnsense habe ich nach dem online howto eingerichtet
https://wiki.opnsense.org/manual/how-tos/nginx.html (https://wiki.opnsense.org/manual/how-tos/nginx.html)
PLUS wie bereits beschrieben in locations in "advanced mode" aktivieren und am Ende den "WebSocket" aktivieren
und bei HTTP Server "https only". Das Zertifikat kommt ganznormal vom Let's Encrypt
Wenn noch Fragen sind, einfach hier nochmal schreiben
shb