[Apache 2.2] Problem mit Subdomain

Alles, was den Apache betrifft, kann hier besprochen werden.

[Apache 2.2] Problem mit Subdomain

Postby ChrislleD » 11. December 2015 11:05

Ahoi Matrosen!

Chris hier, mit einem großen Brett vor meinem Kopf. Ich hab die Hoffnung, dass ihr mir helfen könnt, es wieder zu entfernen.

Ich nenne einen (v)Server mein Eigen, ein paar Domains und eine Owncloud-Installation. Um Letztere zugänglich zu machen, dachte ich an eine eigene Subdomain ("upload.meinedomain.de"). Ein paar Security-Tipps von der Owncloud Website später stand folgende Config:

Code: Select all
    VirtualHost *:80>
            ServerName meinedomain.de
            ServerAlias www.meinedomain.de
            DocumentRoot /var/www/meinedomain/
            <Directory /var/www/meinedomain/>
                    Options -Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    allow from all
            </Directory>
            ErrorLog /var/log/apache2/error_meinedomain.log
            LogLevel warn
            CustomLog /var/log/apache2/access_meinedomain.log combined
            ServerSignature On
    </VirtualHost>

    <VirtualHost *:80>
            DocumentRoot /var/www/owncloud/
            ServerName upload.meinedomain.de
    #### Redirect 443 ###
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
    #### End Redirect ###
            <Directory /var/www/owncloud>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Order allow,deny
                    allow from all
            </Directory>
    </VirtualHost>

    <VirtualHost 123.456.789.012:443>
            DocumentRoot /var/www/owncloud/
            ServerName upload.meinedomain.de
            <IfModule mod_headers.c>
                    Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
            </IfModule>
    ####Configuration SSL #####
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    #### End of SSL  ####
            <Directory /var/www/owncloud>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                     Order allow,deny
                    allow from all
            </Directory>
    </VirtualHost>





Das Ergebnis nun ist leider ein völlig anderes als ich erwartet hatte :oops:

Erwartet 1:

http://upload.meinedomain.de/ eingegeben --> Ergebnis: https//upload.meinedomain.de/ (Startseite Owncloud)

Eingetreten 1:

http://upload.meinedomain.de/ eingegeben --> Ergebnis: https//meinedomain.de/owncloud/ (Startseite Owncloud)


Erwartet 2:

https://upload.meinedomain.de/ eingegeben --> Ergebnis: https//upload.meinedomain.de/ (Startseite Owncloud)

Eingetreten 2:

https://upload.meinedomain.de/ eingegeben --> Ergebnis: weisse Seite ohne Meldung :evil:

Wäre euch/dir sehr für einen neuen Denkanstoss verbunden.

Gruß Chris
ChrislleD
 
Posts: 4
Joined: 11. December 2015 10:57
Operating System: Debian 7

Re: [Apache 2.2] Problem mit Subdomain

Postby Nobbie » 11. December 2015 11:35

Hier ist schon einmal ein Irrsinnsfehler:

Code: Select all
   VirtualHost *:80>


Da fehlt das "<" Zeichen am Anfang. Ob das andere Folgefehler sind, weiß ich nicht.

Sehr eigenartig ist auch dieses Konstrukt:

Code: Select all
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]


Die RewriteCond kann sowieso nie eintreten, weil Du Dich im Kontext des VirtualHosts auf Port 80(!) befindest. Da kann er nicht andere Werte annehmen. Außerdem ist ein Rewrite hier mit Kanonen auf Spatzen geschossen, viel einfacher ist ein simpler Redirect:

Code: Select all
Redirect / https://upload.meinedomain.de/


Ansonsten zu den anderen Dingen kann ich nichts sagen, da müßtest Du selbst im AccessLog und ErrorLog nachschauen.

P.S.: Was die anderen Fehler betrifft (anhängen von "owncloud" an die URL usw.), da würde ich vermuten, dass Du erst owncloud installiert hast (und da war das dann die richtige URL) und jetzt im Nachhinein die Subdomain anlegst. Das geht dann in die Hose, ich würde vermuten, dass owncloud selbst irgendeinen Redirect veranlasst (ggf. in einer .htaccess, oder im PHP Code) und dass owncloud auch irgendeine setup/config Datei hat (ggf. auch nur Einträge in der Datenbank), unter welcher URL und in welchem Pfad es steht (das wird bei der Installation angelegt). Diese Werte stimmen dann jetzt alle nicht mehr. Entweder musst Du die entsprechenden Stellen finden und korrigieren, oder (was eigentlich der richtige Weg ist) erst die Subdomains anlegen und danach erst owncloud unter Verwendung der Subdomains installieren.
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04

Re: [Apache 2.2] Problem mit Subdomain

Postby Melewo » 11. December 2015 12:17

Wo hast Du den Code her?
Ich meine, der wird ja nicht von Dir sein?
Das was Nobbie schrieb, das hätte ich jetzt übersehen, mich hatte nur gewundert, warum da [NC,R,L] steht und nicht [R=301,L] , um einen Redirect auszulösen. Nur R liefert doch wohl nur einen 302, so wie ich das kenne.
Melewo
 
Posts: 15
Joined: 08. August 2015 20:35
Operating System: Windows 10

Re: [Apache 2.2] Problem mit Subdomain

Postby ChrislleD » 11. December 2015 14:30

Nobbie wrote:Hier ist schon einmal ein Irrsinnsfehler:
Da fehlt das "<" Zeichen am Anfang.


Eher ein C&P-Fehler ;). Trotzdem Danke fürs aufmerksame Lesen.

Nobbie wrote:Sehr eigenartig ist auch dieses Konstrukt:


Den Rewrite auf https hatte ich einem Blog entnommen. Von der Idee her schien es mir sinnvoll: Wenn die User selbst bei der Eingabe das "s" hinter http vergessen, soll dies automtisch hinzugefügt werden. Nie ohne Schutz surfen :). Liese sich das so auch mit deinem redirect bewerkstelligen?

Nobbie wrote:P.S.: Was die anderen Fehler betrifft (anhängen von "owncloud" an die URL usw.), da würde ich vermuten, dass Du erst owncloud installiert hast (und da war das dann die richtige URL) und jetzt im Nachhinein die Subdomain anlegst.


Da vermutest du absolut richtig und ich beiss mir grad in den Allerwertesten, dass ich nicht selbst auf die Idee gekommen bin. Das wird jetzt noch mal einiges an Recherche nach sich ziehen, wie ärgerlich. Dennoch vielen Dank.
ChrislleD
 
Posts: 4
Joined: 11. December 2015 10:57
Operating System: Debian 7

Re: [Apache 2.2] Problem mit Subdomain

Postby Nobbie » 11. December 2015 15:02

ChrislleD wrote:Liese sich das so auch mit deinem redirect bewerkstelligen?


Ist "Liese" Deine Nachbarin?? ;)

Natürlich ließe sich das mit einem Redirect bewerkstelligen, Du machst ja auch nur einen Redirect, nur hast Du das klobige Rewrite drum herum. Außerdem hätte ich mehr Vertrauen erwartet, wie wäre es, wenn Du es einfach mal ausprobierst?
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04

Re: [Apache 2.2] Problem mit Subdomain

Postby Melewo » 11. December 2015 16:27

ChrislleD wrote:Den Rewrite auf https hatte ich einem Blog entnommen.

Ja aber in was für einem Zusammenhang wurde es da benutzt?
Einfaches Kopieren bringt oft nichts, wenn in einem anderen Kontext benutzt. Die unten verlinkten Beispiele mit Redirect permanent sollten jedoch zutreffen, denke ich mir zumindest.

Nobbie wrote:Die RewriteCond kann sowieso nie eintreten, weil Du Dich im Kontext des VirtualHosts auf Port 80(!) befindest. Da kann er nicht andere Werte annehmen.

Da möchte ich doch nachfragen, warum eigentlich nicht? In den Beispielen werden doch die Redirects ebenfalls benutzt, um von Port 80 auf https weiterzuleiten. Somit sollte es doch mit mod_rewrite ebenso möglich sein, würde ich meinen. Oder?

http://wiki.apache.org/httpd/RedirectSSL

Und was die RewriteCond anbelangt, da leuchtet es mir ein, so wie Du es beschreibst. Eigentlich verständlich, doch ich habe da heute beim Suchen auch Beispiele gefunden, die waren ähnlich und wurden als Lösungen angeboten.

Würde es so sehen, Port 443 soll nicht ! sein und ist es ja auch nicht, somit trifft RewriteCond zu, ist nur überflüssig in diesem Bereich, so dass keine Konditionen/Bedingungen definiert werden müssen und somit ein einfacher Redirect permanent genügt.

Code: Select all
    <VirtualHost *:80>
            DocumentRoot /var/www/owncloud/
            ServerName upload.meinedomain.de
    #### Redirect 443 ###
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
Melewo
 
Posts: 15
Joined: 08. August 2015 20:35
Operating System: Windows 10

Re: [Apache 2.2] Problem mit Subdomain

Postby Nobbie » 11. December 2015 19:37

Melewo wrote:Da möchte ich doch nachfragen, warum eigentlich nicht?


Weil es hier so festgelegt ist, steht ja klipp und klar drüber:

Code: Select all
<VirtualHost *:80 />


D.h. in diesen VirtualHost kann Apache NUR DANN kommen, wenn der Request über Port 80 läuft. Geht ja gar nicht anders. Wenn der Port nicht 80 ist, kann dieser VirtualHost nicht erreicht werden.

Melewo wrote:In den Beispielen werden doch die Redirects ebenfalls benutzt, um von Port 80 auf https weiterzuleiten. Somit sollte es doch mit mod_rewrite ebenso möglich sein, würde ich meinen. Oder?


Ja, die Beispiele sind ja oft aus einem leicht anderen Kontext, meistens aus Sicht einer .htaccess. Und wenn man als Kunde eines Massenhosters keinen Zugriff auf die httpd.conf hat, sondern nur eine .htaccess anlegen kann, dann hat man natürlich das Problem, dass man nicht weiß, in welchem Kontext dieser VirtualHost definiert wurde (das steht ja leider nur in der Apache Konfiguration drin). Und wenn diese Konfiguration auch andere Ports als 80 zuläßt (typischerweise auch Port 443, nämlich im Kontext des Directorys), dann kommt man um so eine Abfrage nicht herum (die RewriteCond). Eine .htaccess ist vergleichbar mit Code, was man in einem <DIrectory ....> Container anlegt, aber hier wird ja im Kontext des VirtualHosts der Rewrite veranlasst. Andere Stelle, anderer Kontext, andere Möglichkeiten. Wahrscheinlich gehen diese Beispiele NICHT vom Kontext VirtualHost aus.

Last not least: möglich ist ein Rewrite natürlich. Aber es ist "mit Kanonen auf Spatzen schießen", weil auf Grund des bekannten Kontexts ein normaler Redirect viel einfacher ist. Einfacher zu verstehen, einfacher zu implementieren (man braucht nicht einmal das Modul mod_rewrite).
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04

Re: [Apache 2.2] Problem mit Subdomain

Postby ChrislleD » 11. December 2015 20:06

Nobbie wrote:Weil es hier so festgelegt ist, steht ja klipp und klar drüber:

Code: Select all
<VirtualHost *:80 />


D.h. in diesen VirtualHost kann Apache NUR DANN kommen, wenn der Request über Port 80 läuft. Geht ja gar nicht anders. Wenn der Port nicht 80 ist, kann dieser VirtualHost nicht erreicht werden.




Das versteh ich wiederum nich. Das beabsichtigte Verhalten ist ja, dass WENN eine Anfrage über Port 80 kommt, diese auf 443 umgebogen wird. Wenn die Anfrage schon über 443 kommt (https://upload.betterpic.de), ist ja alles gut.

Werde heute Abend, wenn der Sohn im Bett ist, mal ein bisschen testen. Melde mich gerne, wenn es funktioniert...und auch, wenn es das nicht tut :).

PS: Ich hab noch nen CNAME für die Subdomain nachgezogen. Hatte ich bislang nicht, weiss aber ehrlich gesagt auch nicht, ob das mit meinen Schwierigkeiten zusammenhängt.
ChrislleD
 
Posts: 4
Joined: 11. December 2015 10:57
Operating System: Debian 7

Re: [Apache 2.2] Problem mit Subdomain

Postby Nobbie » 11. December 2015 20:13

ChrislleD wrote:Das versteh ich wiederum nich. Das beabsichtigte Verhalten ist ja, dass WENN eine Anfrage über Port 80 kommt


Damit hast Du es doch schon selbst perfekt erklärt: wenn eine Anfrage über Port 80 kommt. Und dieser VirtualHost ist so definiert, dass er auch NUR DANN anspricht (VirtualHost *:80), wenn der Request über Port 80 kommt. Eben. Genau. Da braucht man dann nicht nochmal abzufragen, ob der Port dieses Requests einen bestimmten Wert hat oder nicht: es ist sowieso Port 80, sonst würde die Abfrage gar nicht erst erreicht.

Ich verstehe ehrlich wiederum nicht, was daran so schwierig ist?? Das ist doch oberlogisch und einfach!
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04

Re: [Apache 2.2] Problem mit Subdomain

Postby Melewo » 11. December 2015 20:41

ChrislleD wrote:Das versteh ich wiederum nich.

Wollte auch gerade antworten, dass es mir zunehmend logisch erscheint. Wenn ein Aufruf über http erfolgt, so erfolgt der Zugriff ja standardmäßig über Port 80, wie in der conf definiert. Und der kann ja nie und nimmer woanders herkommen, es sein denn, es wurde ein anderer Port definiert, was relativ selten ist.
Somit ist diese Zeile mit der RewriteCond völliger Unfug in der conf, denn woher sollte der sonst kommen, als über 80. Der Port 443 wird hier zwar durch das ! verneint, so dass die Abfrage eigentlich lautet, Bedingung erfüllt, wenn ein Port zwischen 1 und 10.000 außer 443, doch die ist halt dennoch über:

Code: Select all
RewriteCond %{SERVER_PORT} !^443$

Wenn aber diese Bedingung nicht kontrolliert werden braucht, dann ist die RewriteEngine ebenfalls über, denn nur für die Weiterleitung genügt halt:

Code: Select all
Redirect permanent / https://upload.meinedomain.de/

Oder wohin Du auch immer möchtest. Anders sieht es in einer htaccess aus, da ergibt eine Abfrage einen Sinn.
Melewo
 
Posts: 15
Joined: 08. August 2015 20:35
Operating System: Windows 10

Re: [Apache 2.2] Problem mit Subdomain

Postby ChrislleD » 11. December 2015 23:36

^^ Begriffen :).


Zwischenzeitlich Erfolgsmeldung:

VirtualHost:

Code: Select all
<VirtualHost *:80>
        DocumentRoot /var/www/owncloud/
        ServerName upload.meinedomain.de

Redirect / https://upload.meinedomain.de/

        <Directory /var/www/owncloud>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

                ErrorLog /var/log/apache2/error_meinedomain.log
                LogLevel warn
                CustomLog /var/log/apache2/access_meinedomain.log combined

</VirtualHost>

<VirtualHost 123.456.789.0:443>
        DocumentRoot /var/www/owncloud/
        ServerName upload.meinedomain.de

        <IfModule mod_headers.c>
                Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
        </IfModule>

####Configuration for SSL #####
SSLEngine on
SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
#### End of SSL Configuration ####

        <Directory /var/www/owncloud>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>


Dann gab es da noch einen netten Eintrag in der /var/www/owncloud/config/config.php, den ich angepasst habe:

Code: Select all
'overwrite.cli.url' => 'http://upload.meinedomain.de',


Da stand zuvor 123.456.789.0/owncloud. Im Prinzip genau, was Nobbie vermutet hatte.

Ergebnis:

http://upload.meinedomain.de --> https:/upload.meinedomain.de/index.php (Startseite Owncloud)
https://upload.meinedomain.de --> https:/upload.meinedomain.de/index.php (Startseite Owncloud)

Wonderbra :)

Gerne noch Verbesserungsvorschläge für die Config! Ansonsten die Frage: Ist es bei euch üblich, den Thread als solved zu markieren?
ChrislleD
 
Posts: 4
Joined: 11. December 2015 10:57
Operating System: Debian 7

Re: [Apache 2.2] Problem mit Subdomain

Postby Melewo » 12. December 2015 09:04

Gut, freut mich, da haben wir ja beide etwas gelernt. Noch ein Tipp, falls Du unter der Subdomain etwas zu liegen hast, was auch von Suchmaschinen erfasst werden soll, dann notiere hinter Redirect 301 oder permanent, damit der Server bei Anfragen mit 301 als Statuscode antwortet. Ohne Zusatz antwortet der, soweit mir bekannt, nur mit 302 (temporäre Weiterleitung) und da stehen Suchmaschinen nicht drauf. So würde es zumindest bei einer Notierung in einer htaccess aussehen, falls es da jetzt nicht auch noch Unterschiede geben sollte.

Und hauptsächlich fürs Auge, jedoch auch ein wenig für die leichtere Lesbarkeit, würde ich die passend einrücken.
Melewo
 
Posts: 15
Joined: 08. August 2015 20:35
Operating System: Windows 10

Re: [Apache 2.2] Problem mit Subdomain

Postby Nobbie » 12. December 2015 11:23

ChrislleD wrote:Ist es bei euch üblich, den Thread als solved zu markieren?


Eher selten, im englischen Board sehe ich es manchmal. Mir ist das egal.
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 7 guests