ubuntuusers.de

SSH Tunnel auf Apache -> Error 302

Status: Ungelöst | Ubuntu-Version: Server 17.10 (Artful Aardvark)
Antworten |

egeus

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 29

Moin, ich habe einen von außen nicht erreichbaren privaten Server. Dieser stellt eine Nextcloud instanz bereit. Nun soll er natürlich aus den Weiten des Internets ebenfalls erreichbar sein. Darum habe ich auf dem privaten Server einen SSH-Tunnel zu einem öffentlichen Server mit fester IP und allem was man so benötigt gemacht mit folgendem Befehl (später möchte ich hierfür Autossh als Systemdienst verwenden):

1
ssh -R 5000:localhost:80 user@öffentlicher-server.tld

Im nächsten Schritt möchte ich dann auf dem öffentlichen Server per ProxyPass in einem Virtualhost die entsprechende Domain abfangen. Aber so weit bin ich gar nicht gekommen:

Wenn ich nun auf dem öffentlichem Server mittels Lynx auf "http://localhost:5000" gehe, bekomme ich u.a. meine phpinfo.php-Datei angezeigt die ich auch aufrufen kann. Wenn ich jetzt aber auf "http://localhost:5000/nextcloud" gehe, bekomme ich nach einigen Versuchen vom Lynx den Fehler "Location url is not absolute" angezeigt. Auf dem Server kommt folgender Eintrag in die Access.log:

1
::1 - - [25/Nov/2017:23:07:48 +0100] "GET /nextcloud/ HTTP/1.0" 302 -

folglich Error-Code 302. Meine zwei Config-Dateien auf dem privatem Server sehen wie folgt aus:

Zuerst der Default-Fall, falls der Server ohne Domain etc. angesprochen wird - dieser Fall springt auch an, da die entsprechende Logdatei gefüllt wird:

<VirtualHost *:80>
    ErrorLog /var/log/httpd/default-error.log
    CustomLog /var/log/httpd/default-access.log common
</VirtualHost>

Und eine zweite Config-Datei die einerseits den Alias /nextcloud abfängt (was hier das Relevante ist), andererseits bei Aufruf einer bestimmten Domain anspricht (was auch funktioniert):

<IfModule mod_alias.c>
    Alias /nextcloud /usr/share/webapps/nextcloud/
</IfModule>

<Directory /usr/share/webapps/nextcloud/>
    Options FollowSymlinks
    AllowOverride all
    Require all granted
    php_admin_value open_basedir "/srv/http/:/dev/urandom:/tmp/:/usr/share/pear/:/usr/share/webapps/nextcloud/:/etc$
</Directory>

<VirtualHost *:80>
    ServerAdmin foo@foofarm.com
    DocumentRoot /usr/share/webapps/nextcloud
    ServerName nextcloud.mydomain.tld
    ErrorLog /var/log/httpd/nextcloud.foo.info-error_log
    CustomLog /var/log/httpd/nextcloud.foo.info-access_log common
</VirtualHost>

Ich hoffe, ihr könnt mir einen Tipp geben, wo mein Fehler liegt. Denn momentan fällt mir leider nichts mehr ein...

(Hintergrund der ganzen Geschichte: Ich habe keine eigene IPv4 mehr sondern bin per DS-Lite online. Also variabler IPv6 Adressraum sowie eine IPv4 per NAT mit vielen anderen Leuten zusammen. Per IPv6 komme ich auch wunderbar auf den Server - aber leider ist sehr oft kein IPv6 verfügbar, z.B. in vielen Handynetzen, öffentlichen Wlans, Firma... - daher brauche ich eine Möglichkeit per IPv4 auf den IPv6 Server zuzugreifen. Aber das spielt technisch hier ja keine Rolle...)

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

egeus schrieb:

Auf dem Server kommt folgender Eintrag in die Access.log:

1
::1 - - [25/Nov/2017:23:07:48 +0100] "GET /nextcloud/ HTTP/1.0" 302 -

folglich Error-Code 302.

302 ist kein Fehler sondern eine Weiterleitung.

Wenn ich nun auf dem öffentlichem Server mittels Lynx auf "http://localhost:5000" gehe, bekomme ich u.a. meine phpinfo.php-Datei angezeigt die ich auch aufrufen kann. Wenn ich jetzt aber auf "http://localhost:5000/nextcloud" gehe, bekomme ich nach einigen Versuchen vom Lynx den Fehler "Location url is not absolute" angezeigt.

Der Server leitet weiter, aber diese URL ist nicht absolut, sondern relativ.

Ich hoffe, ihr könnt mir einen Tipp geben, wo mein Fehler liegt. Denn momentan fällt mir leider nichts mehr ein...

In deiner Apache-Konfiguration sehe ich keine Weiterleitung, koennte die von Nextcloud kommen?

egeus

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 29

sebix schrieb:

egeus schrieb:

Auf dem Server kommt folgender Eintrag in die Access.log:

1
::1 - - [25/Nov/2017:23:07:48 +0100] "GET /nextcloud/ HTTP/1.0" 302 -

folglich Error-Code 302.

302 ist kein Fehler sondern eine Weiterleitung.

Da es bedingt durch die Weiterleitung nicht funktioniert habe ich es (fälschlicherweise) als Error bezeichnet 😉

Wenn ich nun auf dem öffentlichem Server mittels Lynx auf "http://localhost:5000" gehe, bekomme ich u.a. meine phpinfo.php-Datei angezeigt die ich auch aufrufen kann. Wenn ich jetzt aber auf "http://localhost:5000/nextcloud" gehe, bekomme ich nach einigen Versuchen vom Lynx den Fehler "Location url is not absolute" angezeigt.

Der Server leitet weiter, aber diese URL ist nicht absolut, sondern relativ.

Ich hoffe, ihr könnt mir einen Tipp geben, wo mein Fehler liegt. Denn momentan fällt mir leider nichts mehr ein...

In deiner Apache-Konfiguration sehe ich keine Weiterleitung, koennte die von Nextcloud kommen?

Ich wüsste nicht an welcher Stelle. Alle Http auf Https-Weiterleitungen habe ich extra für die Tests entfernt. Auch wenn ich per lokaler IP auf den Server gehe funktioniert es (http://192..../nextcloud). Es gibt auch keine weiteren Configs auf dem Server, da dort nur ein Apache mit Nextcloud drauf läuft.

Es gibt lediglich noch den folgenden Vhost für SSL, der aber nicht zum Zuge kommt, da ich ja per http drauf zugreife.

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/nextcloud.mydomain.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.mydomain.tld/privkey.pem

ServerAdmin root@localhost
ServerName nextcloud.mydomain.tld

DocumentRoot /usr/share/webapps/nextcloud
<IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
</VirtualHost>

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Also geht es jetzt nur mit Lynx nicht, aber mit anderen Browsern schon?

egeus

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 29

Auf dem Server habe ich nichts anderes zur Verfügung, aber soweit ich es beurteilen kann klappt es auch mit anderen Browsern nicht.

egeus

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 29

Jetzt habe ich, aufgrund deiner Frage, einmal folgendes ausprobiert: von meinem lokalem PC habe ich einen SSH-Tunnel auf den öffentlichen Server gemacht der mir local den Port 5001 bereitstellt und dort auf dem Rootserver den Port 5000 weiterleitet

ssh -L 5001:localhost:5000 user@öffentlicher-server.tld

Gleichzeitig hatte ich den SSH-Tunnel vom privatem Server zum öffentlichen Server offen (Port 5000->80).

Wenn ich nun auf meinem lokalem PC den Browser auf http://localhost:5001/nextcloud öffne, bekomme ich die Nextcloud angezeigt. Wenn ich jedoch auf dem Rootserver per Lynx auf http://localhost:5000/nextcloud gehe, bekomme ich wieder die Meldung "Location URL is not absolute" angezeigt. Und als "Webseite" zeigt mir Lynx " The requested URL /nextcloud was not found on this server." an. Warum will er auf /nextcloud gehen, obwohl ich localhost:5000/nextcloud angebe?

Was läuft hier falsch?

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Na du hast doch einen SSH Tunnel, damit kannst du zb mit -L 5001:localhost:80 deinen lokalen Port 5001 auf den entfernten Port 80 tunneln lassen. Geht auch mit dem Parameter LocalForward in der lokalen ssh-Konfiguration.

egeus

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 29

Ich verstehe nicht was du meinst, habe ich doch quasi gemacht.

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

egeus schrieb:

Ich verstehe nicht was du meinst, habe ich doch quasi gemacht.

Ja, passt. Haben wir beide quasi gleichzeitig geschrieben.

egeus schrieb:

Wenn ich jedoch auf dem Rootserver per Lynx auf http://localhost:5000/nextcloud gehe, bekomme ich wieder die Meldung "Location URL is not absolute" angezeigt. Und als "Webseite" zeigt mir Lynx " The requested URL /nextcloud was not found on this server." an. Warum will er auf /nextcloud gehen, obwohl ich localhost:5000/nextcloud angebe?

Das scheint ein Fehler in Lynx zu sein: https://lists.gnu.org/archive/html/lynx-dev/1999-11/msg00361.html

egeus

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 29

Den Beitrag in der Mailingliste habe ich auch schon gesehen, denke jedoch nicht, dass es auf mich zutrifft:

Mein nächster Schritt ist gewesen, dass ich auf dem öffentlichen Server einen Virtualhost angelegt habe:

<VirtualHost *:80>
ServerName nextcloud2.mydomain.tld
ProxyPass / http://localhost:5000/nextcloud
ProxyPassReverse / http://localhost:5000/nextcloud
</VirtualHost>

Wenn ich nun von meinem PC auf die öffentliche Domain zugreife, bekomme ich vom Firefox meines localen PCs ebenfalls eine (sehr ähnliche) Fehlermeldung: "Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."

Was weiterhin sehr merkwürdig ist, ist dass in der Adresszeile beim Aufruf von "http://nextcloud2.mydomain.tld" die Domain um zwei Slashs ergänzt wird: "http://nextcloud2.mydomain.tld//"

Wenn ich nun aus dem Virtualhost bei ProxyPass und ProxyPassReverse die Domain auf "http://localhost:5000/" ändere, und mittels meines PCs auf nextcloud2.mydomain.tld/nextcloud gehe funktioniert es...

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Was laeuft denn ueberhaupt auf Port 5000 fuer ein Webserver?

egeus

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 29

Auf beiden Servern ist ein Apache an. Aber der läuft ja auf einer anderen Kiste und wird nur auf Port 5000 per SSH getunnelt.

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Na ein Server leitet wohl auf / um, vermutlich der letzte. Mehr gibt die Glaskugel nicht her.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Nextcloud möchte nur über sogenannte Trusted-Domains aufgerufen werden. Selbige kann man in der Konfigurationsdatei hinterlegen. Andernfalls wird von Nextcloud umgeleitet.

Antworten |