[gelöst] Website Port 80 und owncloud 443 hosten (Apache)

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
Lalle75
Beiträge: 83
Registriert: 25.10.2015 17:41:00
Wohnort: Ruhrgebiet

[gelöst] Website Port 80 und owncloud 443 hosten (Apache)

Beitrag von Lalle75 » 18.09.2016 13:45:21

Hallo zusammen.

Wie der Titel schon sagt, möchte ich eine frei über den offenen Port 80 erreichbare Website erzeugen und gleichzeitig Zugriff auf die SSL-geschützte owncloud haben. Prinzipiell funktioniert dies auch bei mir. Aber ich möchte eine Besonderheit konfigurieren, nämlich daß nicht jeder direkt erkennt, daß ich owncloud laufen habe und ich ein Unterverzeichnis ansurfen muß.

Mein Ziel ist, daß nach Eingabe von "http://www.domäne.de" die offene Seite angezeigt wird, und bei Eingabe von "https://www.domäne.de/owncloud" der entsprechende Dienst.

Ich konnte durch Konfiguration der virtuellen Hosts nur einrichten, daß jede Anfrage auf den Port 443 zur Cloud geht. Ich möchte aber, daß nur bei zusätzlicher Eingabe des Unterordners "/owncloud" diese geöffnet wird.

Ich konnte bereits einrichten, daß bei Eingabe von "http://www.domäne.de/owncloud" dieser automatisch per Redirect auf den Port 443 umgeleitet wird, aber wenn ich dies im VHost für 443 ebenfalls tue, landet meine Anfrage auf "http://www.domäne.de/index.htmlowncloud". Ist so ein bißchen ein Henne-Ei-Problem.

Meine Config-Datei sieht folgendermaßen aus:

Code: Alles auswählen

<VirtualHost *:80>
        ServerName Website
        Redirect /owncloud https://www.domäne.de/owncloud
        DocumentRoot /var/www/html
        SSLEngine off
        ...
</VirtualHost>

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerName owncloud
                #Redirect / http://www.domäne.de/index.html
                DocumentRoot /var/www/owncloud
                SSLEngine on
                ...
        </VirtualHost>
</IfModule>
Die Schwierigkeit dabei ist noch, daß der Domänenname nicht zu 100% fix ist. Es kann sich um eine WAN-IP, eine lokale IP oder Domäne handeln, daher die Nutzung des "*" für den VHost.

Kann man überhaupt realisieren, was ich vorhabe, oder ist das unmöglich? Ich hatte auch schon versucht, die Cloud in ein Unterverzeichnis von /var/www/html zu schieben. Hat aber auch nichts genützt.

Ich habe mal mit RedirectMatch versucht, alles was nicht auf /owncloud endet, umzuleiten. Leider schaffe ich es nicht, die RegEx vernünftig zu gestalten.
Zuletzt geändert von Lalle75 am 03.10.2016 13:28:50, insgesamt 1-mal geändert.
Gruß,
Der Lalle

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: Website auf Port 80 und owncloud auf 443 hosten (apache)

Beitrag von wanne » 19.09.2016 00:31:56

Ich habe mal an den Titel apache angehängt. Sonst schauen hier nochmal 15 rein, die zwar wissen, wie es im nginx geht aber nicht im apache.
Hoffe du hast da kein Problem mit Lalle75
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Website auf Port 80 und owncloud auf 443 hosten (Apache)

Beitrag von heisenberg » 19.09.2016 02:04:35

Probiers Mal damit:

Code: Alles auswählen

        RewriteEngine On
        RewriteRule ^/bla https://%{HTTP_HOST}/bla/
oder so...

Code: Alles auswählen

        RewriteEngine On
        RewriteRule ^/bla(.*) https://%{HTTP_HOST}/bla$1
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
MegaV0lt
Beiträge: 163
Registriert: 21.11.2011 11:16:07
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Website auf Port 80 und owncloud auf 443 hosten (Apache)

Beitrag von MegaV0lt » 19.09.2016 08:44:42

Bei mir läuft ownclod im Unterverzeichniss:

Code: Alles auswählen

root auf HP-T5730 am 19.09.2016 08:27
[~] # cat /etc/apache2/sites-enabled/hp-t5730.conf
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName hp-t5730
        DocumentRoot /var/www

</VirtualHost>


<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin webmaster@localhost
        ServerName hp-t5730
        DocumentRoot /var/www

        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual host.
        SSLEngine on

        #   A self-signed (snakeoil) certificate can be created by installing
        #   the ssl-cert package. See
        #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #   If both key and certificate are stored in the same file, only the
        #   SSLCertificateFile directive is needed.
        SSLCertificateFile /etc/apache2/ssl/hp-t5730.crt
        SSLCertificateKeyFile /etc/apache2/ssl/hp-t5730.key
</VirtualHost>

</IfModule>
Und hier noch die .conf für den ddns-Zugriff:

Code: Alles auswählen

root auf HP-T5730 am 19.09.2016 08:43
[~] # mc

[~] # cat xxx.ddns.net.conf
# Optionally load the headers module:
#LoadModule headers_module modules/mod_headers.so

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName xxx.ddns.net
        DocumentRoot /var/www
        # Force SSL
        Redirect permanent / https://xxx.ddns.net/
</VirtualHost>


<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName xxx.ddns.net
        DocumentRoot /var/www

        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual host.
        SSLEngine on

        #   A self-signed (snakeoil) certificate can be created by installing
        #   the ssl-cert package. See
        #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #   If both key and certificate are stored in the same file, only the
        #   SSLCertificateFile directive is needed.
        SSLCertificateFile /etc/apache2/ssl/xxx.ddns.net.crt
        SSLCertificateKeyFile /etc/apache2/ssl/xxx.ddns.net.key

        #   Set up HSTS
        Header always add Strict-Transport-Security "max-age=15768000"
        #Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>

</IfModule>
xxx ist unkenttlich gemachte Domain
"Das Internet? Gibt's diesen Blödsinn immer noch?"
[Homer Simpson], Sicherheitsinspektor im Kernkraftwerk Springfield.

Benutzeravatar
Lalle75
Beiträge: 83
Registriert: 25.10.2015 17:41:00
Wohnort: Ruhrgebiet

Re: Website auf Port 80 und owncloud auf 443 hosten (Apache)

Beitrag von Lalle75 » 02.10.2016 21:41:56

Sorry für die späte Antwort. Hatte ein paar Tage anderes um die Ohren.

Ich habe mittels Redirect die Anfragen auf den Port 80 mit Angabe von "/owncloud" auf den Port 443 umgelenkt. Wenn aber jemand direkt auf 443 anfragt, landet er automatisch auf owncloud... und das soll nicht. Sondern nur, wenn "/owncloud" in der Anfrage mitgesendet wird:

Code: Alles auswählen

http://meinedomain.com          --> landet auf öffentlicher Seite
http://meinedomain.com/owncloud --> landet auf privater Seite "https://meinedomain.com/owncloud"
https://meinedomain.com         --> landet auf öffentlicher Seite "http://meinedomain.com"
Bislang führten alle meine Versuche, mit Redirect die Anfragen umzuleiten, zu Zirkelschlüssen ("Anfrage kann nie beendet werden"). Ich ja auch klar, denn wenn ich immer https auf http umleite, und dort "/owncloud" wieder zu https führt, drehe ich mich im Kreis.

Im Grunde muß ich eine Art Abbruchbedingung für diesen Kreisschluß haben. RewriteCond und RewriteRule scheinen in die richtige Richtung zu gehen, aber ich verstehe nicht ganz wie und wo sie einzusetzen sind. Wenn ich sie direkt unter <VirtualHost _default_:443> einsetze, passiert nichts.
Gruß,
Der Lalle

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Website auf Port 80 und owncloud auf 443 hosten (Apache)

Beitrag von heisenberg » 02.10.2016 21:54:00

Hast Du meine Beispiele ausprobiert?

Vielleicht ist es Dir nicht aufgefallen. Du verwendest Redirect und mein Beispiel zeigt RewriteRule. Das sind verschiedene Direktiven mit unterschiedlicher Funktionalität.

Ich habe mein Beispiel getestet, bevor ich es gepostet habe. Es funktioniert so wie Du Dir das wünscht.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
Lalle75
Beiträge: 83
Registriert: 25.10.2015 17:41:00
Wohnort: Ruhrgebiet

Re: Website auf Port 80 und owncloud auf 443 hosten (Apache)

Beitrag von Lalle75 » 02.10.2016 22:52:02

heisenberg hat geschrieben:Hast Du meine Beispiele ausprobiert?

Vielleicht ist es Dir nicht aufgefallen. Du verwendest Redirect und mein Beispiel zeigt RewriteRule. Das sind verschiedene Direktiven mit unterschiedlicher Funktionalität.

Ich habe mein Beispiel getestet, bevor ich es gepostet habe. Es funktioniert so wie Du Dir das wünscht.
Deine Beispiele funktionieren ja auch... aber halt nur von Port 80 nach 443. Ich möchte von 443 nach 80, wenn "/owncloud" in der Anfrage fehlt.
Irgendwas wie:

Code: Alles auswählen

<VirtualHost _default_:443>
    RewriteCond %{ keine Ahnung wie das Tag heißt } !/owncloud [NC]
    RewriteRule .* http://%{HTTP_HOST}
"Wenn /owncloud nicht nach dem Host steht, ersetze alle Zeichen durch http://%{HTTP_HOST}"
Gruß,
Der Lalle

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Website auf Port 80 und owncloud auf 443 hosten (Apache)

Beitrag von heisenberg » 03.10.2016 00:48:04

Ungetestet....

Code: Alles auswählen

<VirtualHost *:80>
        RewriteCond %{REQUEST_URI} /owncloud.*
        RewriteRule ^(.*) https://%{HTTP_HOST}/$1
</VirtualHost>

<VirtualHost *:443>
        RewriteCond %{REQUEST_URI} !/owncloud.*
        RewriteRule ^(.*) http://%{HTTP_HOST}/$1
</VirtualHost>
Für Details siehe: http://httpd.apache.org/docs/current/mo ... write.html

Zum Testen ist es vielleicht gut, nicht beide Umleitungen gleichzeitig drin zu haben - wegen der von Dir bemerkten Umleitungsschleife. Und weiterhin zum Testen ist es vielleicht gut wget statt einen Browser zu verwenden. Da siehst Du besser was abläuft.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
Lalle75
Beiträge: 83
Registriert: 25.10.2015 17:41:00
Wohnort: Ruhrgebiet

[gelöst] Website Port 80 und owncloud 443 hosten (Apache)

Beitrag von Lalle75 » 03.10.2016 12:14:42

Jetzt klappt es! Ich hatte die Cloud lokal unter einem anderen Pfad installiert als die normale, öffentliche Webseite.
Die Quelldateien von owncloud lagen unter /var/www/owncloud und die öffentlichen Quellen unter /var/www/html.

Ich habe lokal einen symbolischen Link von /var/www/owncloud nach /var/www/html/owncloud erzeugt und per Alias /owncloud und /var/www/html/owncloud verbunden.
Jetzt funktionieren auch die Rewrite-Anweisungen korrekt.

Besten Dank für die Hinweise.
Gruß,
Der Lalle

Antworten