Verschiedene DynDNS Accounts auf einem Server hosten (mod_rewrite?)

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Brian!

Benutzer
Registriert
29. März 2009
Beiträge
147
Reaktionspunkte
0
Punkte
0
Hallo Zusammen!

Ich beiße mir schon seit geraumer Zeit die Zähne daran aus, verschiedene DynDNS Accounts für den Benutzer UNSICHTBAR auf einer Synology DS209+ zu hosten.

Dazu soll z.B.:
muster1.dyndns.org auf /volume1/web/muster1/ sein Root Verzeichnis haben,
muster2.dyndns.org auf /volume1/web/muster2/ sein Root Verzeichnis usw. ...

Für dem Besucher soll im Browser aber immer nur der Host stehen bleiben, also
http://muster1.dyndns.org/index.html wäre dann die /volume1/web/muster1/index.html,
http://muster2.dyndns.org/index.html wäre dann die /volume1/web/muster2/index.html usw. ...

WICHTIG:
Eine "einfache" VirtualHost Lösung über die Subdomains kommt leider nicht in Frage, da das ganze auch über normale Domainnamen funktionieren soll! (Also meinedomain1.tld auf /volume1/web/meinedomain1.tld, meinedomain2.tld auf /volume1/web/meinedomain2.tld usw. ...)...

Alle meine bisherigen Versuche über mod_rewrite waren aber leider erfolglos.

Rich (BBCode):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^muster1.dyndns.org$
RewriteRule (.*) /muster1/$1 [L]

Diesen Code hatte ich schon direkt am Ende der http.conf-user sowie verpackt in einen VirtualHost und auch schon in /volume1/web/.htaccess (mit Options +Followsimlinks) - jedoch nie mit dem gewünschten Ergebnis.

In der .htaccess leitet er immer entsprechend um - zeigt die Umleitung aber auch im Browser an und in der Server Konfiguration verpackt leitet er mich mit einem [R,L] entsprechend um, nur mit [L] bekomme ich aber über muster2.dyndns.org immer die Synology Hilfe Seite die man bei freischalten des Webservers bekommt solange dieser keinen Inhalt hat (was ich schon sehr merkwürdig finde, da ja eine Menge Inhalt vorhanden ist) und über muster1.dyndns.org den entsprechenden Web Inhalt von /volume1/web/.

Eine Analyse meines Rewrite Log hat mich leider auch noch nicht wirklich weiter bringen können. Was im besonderen wohl auch daran liegt, dass das loggen der Rewrite Regeln nicht so recht funktioniert. Selbst wenn ich vor jeder RewriteRule erneut ein RewriteLog /volume1/... eintrage habe ich noch nicht ergründen können, warum manches gelogt wird und vieles nicht.

Da es mich langsam extrem frustriert, immer dann wenn ich gerade glaube einen Lösung gefunden zu haben, bei allen anderen DynDNS Accounts auf der Synology Webserver Hilfeseite zu gelangen hoffe ich das hier vielleicht noch neue Denkanstöße, Ideen oder Vorschläge hat! :rolleyes:

Vielen Dank schon mal im Voraus und für's rein schauen und drüber lesen! :)

Brian

Edit: kleinen Fehler im Code behoben.
 
Zuletzt bearbeitet:
Das ist eine klassische Aufgabe für vhosts. vhosts haben in dem Sinne nichts mit Subdomains zu tun, auch eine echte Domain kann ein vhost für den Apache sein
 
Danke jahlives für deinen Hinweis!

Ich habe nun nochmal mit VirtualHost experimentiert und festgestellt, dass es in der Tat auch mit unterschiedlichen Domains geht. :)

Allerdings habe ich weiterhin das Problem, dass es NUR mit Angabe einer Subdomain funktioniert! :(

Also folgendes klappt beim Aufruf von www.meinezweitedomain.tld im Browser einwandfrei:
Rich (BBCode):
<VirtualHost *:80>
    ServerName www.meinezweitedomain.tld
    DocumentRoot /var/services/web/meinezweitedomain
</VirtualHost>

Allerdings bekomme ich bei folgenden drei Beispielen nach der Eingabe von meinedomain.tld im Browser immer nur diese tolle Synology Hilfeseite angezeigt ("Hallo! Herzlich Willkommen bei Synology Web Station! ..."):
Rich (BBCode):
<VirtualHost *:80>
    ServerName meinezweitedomain.tld
    DocumentRoot /var/services/web/meinezweitedomain

    Redirect 301 / http://www.meinezweitedomain.tld
</VirtualHost>

<VirtualHost *:80>
    ServerName *.meinezweitedomain.tld
    DocumentRoot /var/services/web/meinezweitedomain

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^meinezweitedomain.tld$ [NC]
    RewriteRule (.*) http://www.meinezweitedomain.tld/$1 [R=301,L]
</VirtualHost>

<VirtualHost *:80>
    ServerName meinezweitedomain.tld
    DocumentRoot /var/services/web/meinezweitedomain

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^meinezweitedomain.tld$ [NC]
    RewriteRule (.*) http://www.meinezweitedomain.tld/$1 [R=301,L]
</VirtualHost>

Egal was ich probiere, bei meinedomain.tld komme ich ganz normal auf alles unter /var/services/web aber unter meinezweitedomain.tld landet immer auf der Hilfeseite! :confused:

Bin weiterhin für jede Hilfe sehr dankbar! :rolleyes:

Brian

EDIT:
Also ohne die Weiterleitung/Rewrite von meinezweitedomain.tld auf www.meinezweitedomain.tld geht natürlich auch nicht, nur damit keine Missverständnisse aufkommen. ;)

Rich (BBCode):
<VirtualHost *:80>
    ServerName meinezweitedomain.tld
    DocumentRoot /var/services/web/meinezweitedomain
</VirtualHost>
 
Zuletzt bearbeitet:
Wieso brauchst du dazu 3 vhosts? Ein vhost kann einen Namen und mehrere Aliase haben
Code:
<VirtualHost *:80>
ServerName meinezweitedomain.tld
[FONT=Verdana]ServerAlias *.meinezweitedomain.tld[/FONT]
DocumentRoot /var/services/web/meinezweitedomain[FONT=monospace]
[/FONT]</VirtualHost>
und dann in den DocumentRoot eine .htaccess rein, die falls ohne www aufgerufen auf www umschreibt.
Wichtig ist: Der erste vhost Eintrag MUSS in jedem Fall auf den Haupthost zeigen (also DocumentRoot /var/services/web/). Erst danach kommen "deine" vhost Einträge.
Stell zudem sicher dass du entweder in der Hauptkonfig oder im vhosts File (aber nicht an beiden Orten gleichzeitig) folgende Zeile hast
Code:
NameVirtualHost *:80
 
Danke für die schnelle Antwort!

Also langsam bin ich mal ganz schön verwirrt. :confused:

Ich brauche keine 3 vhost Einträge für eine Seite, das sollten alles verschiedene Beispiele sein.
Um ganz konkret zu werden hier mal mein aktueller Versuch:

Rich (BBCode):
###############################################################################
#
# Virtual Hosts *:80
#
###############################################################################
NameVirtualHost *:80

<VirtualHost *:80>
        ServerName meinemaindomain.tld
        ServerAlias *.meinemaindomain.tld
        DocumentRoot /var/services/web
</VirtualHost>

<VirtualHost *:80>
        ServerName meinezweitdomain.tld
        ServerAlias *.meinezweitdomain.tld
        DocumentRoot /var/services/web/meinezweitdomain
</VirtualHost>

<VirtualHost *:80>
        ServerName meinedrittedomain.tld
        ServerAlias *.meinedrittedomain.tld
        DocumentRoot /var/services/homes/username/web
</VirtualHost>

Das Ergebnis hiervon ist nun FAST perfekt - aber eben leider nur fast:

meinemaindomain.tld -> Hilfeseite
Gehe ich im Browser nun einfach bloß auf Aktualisieren wird mir aber die richtige Seite angezeigt! :confused:
http://mainemaindomain.tld -> Hilfeseite
Aktualisieren im Browser -> richtige Seite
*.meinemaindomain.tld -> richtige Seite

meinezweitedomain.tld -> richtige Seite
komisch, hier geht es nun auf einaml! :confused:
*.meinezweitedomain.tld -> richtige Seite

meinedrittedomain.tld -> Hilfeseite
Aktualisieren im Browser -> richtige Seite
http://meinedrittedomain.tld -> Hilfeseite
Aktualisieren im Browser -> richtige Seite
*.meinedrittedomain.tld -> richtige Seite

Kann mir das vielleicht mal einer erklären!?? :confused:

Auch woher immer diese Hilfeseite geladen wird und warum die DS diese Anzeigt ist mir nach wie vor ein ziemliches Rätsel. :confused:

Ach und zu dem Rewrite in der .htaccess, das beides geht ist mir klar, nur würde mich interessieren, was eher dafür spricht diesen Teil in die .htaccess zu packen? Klar, man kann Änderungen vornehmen ohne gleich wieder den Apache neu starten zu müssen, allerdings habe ich ein subjektiv größeres Vertrauen solche mir sehr wichtigen Dinge (wie Umleitungen auf https) in die Server Konfiguration zu packen. Aber wie gesagt, ein überwiegend subjektives empfinden.

Brian
 
Liegt denn in /var/services/web eine index.html resp index.php? Was passiert denn wenn du meinemaindomain.tld inkl einem File (nicht existierend) aufrufst z.B. meinemaindomain.tld/test.html ? gibt es dann einen 404-er NOT FOUND oder immer noch die Hilfeseite?
Btw: Hast du in der Hauptkonfig einen ServerName eingetragen? Wenn ja dann muss der erste vhost den gleichen ServerName haben wie in der Hauptkonfig
 
In /var/services/web liegt eine index.php, diese wird auch bei "richtige Seite" angezeigt. Desweiteren liegt dort auch eine .htaccess in der u.A. einige Fehlerseiten über ErrorDocument definiert sind. Beim Aufruf einer nicht vorhandenen Seite wird auch entsprechend der Fehler ausgegeben. Auch das Aufrufen von Unterverzeichnissen klappt über meinemaindomain.tld/meineseite einwandfrei.

Lediglich der direkte Aufruf von meinemaindomain.tld funktioniert nicht.

In der http.config-user steht nur ein ServerName *:80, in meiner eigenen Konfig in welcher ich auch den VHost bereich drin stehen habe steht dann nochmal ServerName ssl.meinemaindomain.tld. Könnte das damit zusammen hängen? Welcher ServerName sollte denn für den User Apache gewählt werden?

EDIT:
Okay, hab jetzt 6 verschiedene Varianten ausprobiert - ohne Erfolg. :(
Erstmal in der httpd.conf-user den Eintrag ServerName *:80 auskommentiert und dann folgende 6 Varianten von ServerName in meiner eigenen httpd.conf ausprobiert:

ServerName meinemaindomain.tld
ServerName meinemaindomain.tld:80
ServerName *.meinemaindomain.tld
ServerName *.meinemaindomain.tld:80
ServerName *:80
#ServerName meinemaindomain.tld (auskommentiert, es wurde die lokale IP des Servers automatisch eingerichtet).

Nun, wie man sieht, ich tappe im dunklen... :confused:
 
Zuletzt bearbeitet:
Scheint nun zu funktionieren...

So, es geht! :)

Ich kann zwar noch nicht mit Sicherheit sagen warum, aber soweit ich das im Moment beurteilen kann hängt es wohl mit nem Cache, wahrscheinlich in der DS, zusammen.
Habe mal mehr aus Verzweiflung eine index.html angelegt - und siehe da, diese wird aufgerufen! Dann habe ich die index.html wieder gelöscht - und siehe da, auf einmal nimmt er die index.php als wäre nie was gewesen! :rolleyes:

Hoffe wirklich, das sich damit dieses Problem nun erledigt hat - und zuversichtlich bedanke ich mich an dieser Stelle nochmal bei jahlives ohne dessen Hilfe ich sicher nicht so schnell weiter gekommen wäre! :)

Brian
 
So, es geht! :)

Ich kann zwar noch nicht mit Sicherheit sagen warum, aber soweit ich das im Moment beurteilen kann hängt es wohl mit nem Cache, wahrscheinlich in der DS, zusammen.
Habe mal mehr aus Verzweiflung eine index.html angelegt - und siehe da, diese wird aufgerufen! Dann habe ich die index.html wieder gelöscht - und siehe da, auf einmal nimmt er die index.php als wäre nie was gewesen! :rolleyes:

Hoffe wirklich, das sich damit dieses Problem nun erledigt hat - und zuversichtlich bedanke ich mich an dieser Stelle nochmal bei jahlives ohne dessen Hilfe ich sicher nicht so schnell weiter gekommen wäre! :)

Brian
Hattest du nur eine index.php im DocRoot? Dann könnte es auch sein, dass der DirectoryIndex nicht komplett war. Also bei Aufrufen nach domain ohne Filenamen immer eine index.html gesucht wurde. Den DirectoryIndex kannst du pro Verzeichnis in einer .htaccess oder global in der Hauptkonfig setzen.
Hast du diese index.html in /volume1/web oder /var/services/web angelegt? Ist beides eigentlich dasselbe, aber ich habe schon merkwürdige Sachen erlebt z.B. auch solche Fehlerseiten obwohl die Dateien garantiert vorhanden waren.
Einen internen Cache für das lokale Filesystem hat die DS afaik ned. Oder gibt es was in ext3 in dieser Richtung?
Anyway klappt es ja jetzt bei dir. Letztendlich hast du den Fehler mit der klassischen "try and error and try harder" Methode gefunden ;) Das musste ich bei der DS auch schon das eine oder andere Mal machen und plötzlich funzte es mit einer Anpassung die imho niemals diesen Effekt haben könnte.

Gruss

tobi
 
Ja, hatte nur die index.php im DocRoot. D.h. bei der Hauptseite war ursprünglich zusätzlich noch diese von der DS generierte Hilfeseite als index.html. Das die (merkwürdigerweise) da war hatte ich auch erst sehr spät festgestellt. Allerdings wurde nach dem löschen dieser index.html immer noch auf der Hauptseite als auch bei der 3. "Nebenseite" diese Hilfeseite angezeigt.
Erst nach dem erstellen und löschen einer leeren index.html in den jeweiligen DocRoots lief es überall.

Den DirectoryIndex habe ich bisher überall unberührt gelassen. Sprich im Moment besteht nur die Standardversion der httpd.conf-user:

Rich (BBCode):
<IfModule dir_module>
    DirectoryIndex index.html index.htm index.cgi index.php index.php3
</IfModule>

Soweit ich den DirectoryIndex verstehe wird nach den angegebenen Dateien in genau dieser Reihenfolge gesucht, wenn also keine html, htm und cgi datei vorhanden ist sollte dann ja die php genommen werden. Und da keine index.html mehr da war habe ich vermutet, dass die DS diese irgendwie gecached haben müsste. Anders kann ich mir bisher jedenfalls nicht erklären warum es erst nach dem expliziten neu anlegen und löschen einer index.html funktionierte.

Die Dateien habe ich alle über /volume1/ angelegt und nicht über /var/services/.

Bis jetzt funktioniert es jedenfalls immernoch wie gewünscht! :)

Brian
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat