Exclure des domaines spécifiques de Apache2 serverAlias ​​tout en utilisant un alias catch all * (caractère générique)

10

J'ai une application Web qui doit prendre en charge des domaines personnalisés, à cet égard, j'ai configuré le serveur virtuel basé sur le nom suivant:

<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>

Remarquez le * comme alias du serveur? qui attrape tous les domaines sur ce serveur. Cependant, j'ai d'autres sites sur ce serveur que je souhaite exclure de cette liste. Il est plus économique pour moi d'avoir une liste de domaines exclus que de définir manuellement chaque domaine avec lequel un utilisateur peut s'inscrire à ce service en tant qu'alias de serveur ...

Ce n'est peut-être pas la meilleure façon de procéder, mais je cherche de l'aide, de la meilleure façon (relativement simple) pour configurer une application Web qui peut intercepter n'importe quel domaine, tout en permettant à d'autres domaines spécifiques d'être routés vers différentes applications .

Victor S
la source

Réponses:

12

Apache recherche une correspondance dans l'ordre de définition des domaines. Si je comprends bien votre problème, il peut être résolu en définissant vos hôtes à exclure avant l'hôte catch all.

<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
la source
1
Oui, vous avez raison, mais je suis perplexe sur la façon de le faire sur une pile Ubuntu 10.4 par défaut, où l'ensemble des manigances est géré en ayant des répertoires disponibles sur les sites et activés sur les sites, et chaque définition d'hôte virtuel existe dans sa propre exclusivité fichier ... comment puis-je contrôler la commande dans ce cas?
Victor S
Les fichiers sont chargés par ordre alphabétique (l'ordre de tri par défaut pour ls).
user9517
1
pour une définition de site qui doit venir en premier, nommez-la quelque chose comme 000-excluded.example.com.confdans le répertoire des sites disponibles.
Brian Minton
Je cherchais à faire exactement la même chose, et cela ne fonctionne pas pour moi. L'exclus.example.com VirtualHost qui avait "ServerName exclu.example.com \ n Redirect / example.com/excluded " a provoqué la redirection de toutes les demandes vers le VirtualHost plus général (qui a définitivement suivi le VirtualHost spécifique dans la configuration).
quuxman