Wyklucz określone domeny z serwera Apache2Alias, używając aliasu catch all * (symbol wieloznaczny)

10

Mam aplikację internetową, która musi obsługiwać domeny niestandardowe, w związku z tym skonfigurowałem następujący serwer wirtualny oparty na nazwie:

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

Zauważ * jako alias serwera? który przechwytuje wszystkie domeny na tym serwerze. Mam jednak inne strony na tym serwerze, które chcę wykluczyć z tej listy. Bardziej ekonomiczne jest dla mnie posiadanie listy wykluczonych domen niż ręczne ustawianie każdej domeny, w której użytkownik może zarejestrować się w tej usłudze jako serwerAlias ​​...

Być może nie jest to najlepsza droga, ale szukam pomocy w najlepszy (stosunkowo prosty) sposób, aby skonfigurować aplikację internetową, która może przechwytywać dowolne domeny, jednocześnie umożliwiając kierowanie innych określonych domen do różnych aplikacji .

Victor S.
źródło

Odpowiedzi:

12

Apache szuka dopasowania w kolejności, w której domeny są zdefiniowane. Jeśli dobrze rozumiem problem, można go rozwiązać, definiując hosty, które mają zostać wykluczone przed przechwyceniem wszystkich hostów.

<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>
użytkownik9517
źródło
1
Tak, masz rację, ale zastanawiam się, jak to zrobić na domyślnym stosie Ubuntu 10.4, gdzie cały shenanigans jest zarządzany przez posiadanie dostępnych stron i katalogów obsługujących strony, a każda definicja hosta wirtualnego istnieje w swoim własnym plik ... jak w takim przypadku kontrolować kolejność?
Victor S,
Pliki są ładowane w kolejności alfabetycznej (domyślna kolejność sortowania dla ls).
user9517,
1
dla definicji witryny, która musi być na pierwszym miejscu, nazwij ją jak 000-excluded.example.com.confw reż.
Brian Minton
Chciałem zrobić dokładnie to samo, ale to nie działa dla mnie. Wykluczony.example.com VirtualHost, który miał „Nazwa_serwera.example.com \ n Przekierowanie / przyklad.com/wykluczone ” spowodował przekierowanie wszystkich żądań do bardziej ogólnego VirtualHost (który zdecydowanie podążał za konkretnym VirtualHost w konfiguracji).
quuxman