Schließen Sie bestimmte Domänen von Apache2 serverAlias ​​aus, während Sie einen Catch all * (Wildcard) -Alias ​​verwenden

10

Ich habe eine Webanwendung, die benutzerdefinierte Domänen unterstützen muss. In diesem Zusammenhang habe ich den folgenden namensbasierten virtuellen Server eingerichtet:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    RackEnv production
    DocumentRoot /srv/www/example/current/public
    <Directory /srv/www/example/current/public>
             AllowOverride all
             Options -MultiViews FollowSymLinks
    </Directory>
    ErrorLog /srv/www/example/log/error.log
    TransferLog /srv/www/example/log/access.log
</VirtualHost>

Beachten Sie das * als Server-Alias? das fängt alle Domänen auf diesem Server ab. Ich habe jedoch andere Websites auf diesem Server, die von dieser Liste ausgeschlossen werden sollen. Für mich ist es wirtschaftlicher, eine Liste ausgeschlossener Domänen zu haben, als jede Domäne, bei der sich ein Benutzer bei diesem Dienst als ServerAlias ​​registrieren kann, manuell festzulegen ...

Vielleicht ist dies nicht der beste Weg, aber ich suche Hilfe, um auf die beste (relativ einfache) Weise eine Web-App einzurichten, die alle Domains abfangen kann, während andere spezifische Domains an andere Apps weitergeleitet werden können .

Victor S.
quelle

Antworten:

12

Apache sucht nach einer Übereinstimmung in der Reihenfolge, in der die Domänen definiert sind. Wenn ich Ihr Problem richtig verstehe, kann es gelöst werden, indem Sie Ihre Hosts so definieren, dass sie ausgeschlossen werden, bevor alle Hosts abgefangen werden.

<VirtualHost *:80>
    ServerName excluded.example.com
    ServerAlias  something.example.com ...
    ...
</VirtualHost>
<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    ...
</VirtualHost>
user9517
quelle
1
Ja, Sie haben Recht, aber ich bin verwirrt darüber, wie dies auf einem Standard-Ubuntu 10.4-Stack gemacht werden soll, bei dem die gesamten Spielereien mithilfe von Sites-verfügbaren und Sites-fähigen Verzeichnissen verwaltet werden und jede virtuelle Host-Definition in einem eigenen exklusiven Verzeichnis vorhanden ist Datei ... wie steuere ich in diesem Fall die Reihenfolge?
Victor S
Die Dateien werden in alphabetischer Reihenfolge geladen (die Standardsortierreihenfolge für ls).
user9517
1
Benennen Sie eine Site-Definition, die an erster Stelle stehen muss, etwa 000-excluded.example.com.confim Verzeichnis "sites-available".
Brian Minton
Ich wollte genau das Gleiche tun, und das funktioniert bei mir nicht. Der ausgeschlossene VirtualHost.example.com mit dem Namen "Servername ausgeschlossen.example.com \ n Redirect / example.com/excluded " führte dazu, dass alle Anforderungen an den allgemeineren VirtualHost umgeleitet wurden (was definitiv dem spezifischen VirtualHost in der Konfiguration folgte).
Quuxman