Escludere domini specifici da Apache2 serverAlias ​​mentre si utilizza un alias catch all * (jolly)


10

Ho un'applicazione web che deve supportare domini personalizzati, a tal proposito ho impostato il seguente server virtuale basato sul nome:

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

Notare * come alias del server? che cattura tutti i domini su quel server. Tuttavia, ho altri siti su questo server che voglio essere escluso da questo elenco. È più economico per me avere un elenco di domini esclusi che impostare manualmente ogni dominio con cui un utente può registrarsi su questo servizio come serverAlias ​​...

Forse questo non è il modo migliore di procedere, ma sto cercando aiuto, nel modo migliore (relativamente semplice) per configurare un'app Web che possa catturare qualsiasi dominio, consentendo al contempo che altri domini specifici vengano indirizzati a app diverse .

Risposte:


12

Apache cerca una corrispondenza nell'ordine in cui sono definiti i domini. Se capisco correttamente il tuo problema, allora può essere risolto definendo i tuoi host da escludere prima di catturare tutti gli host.

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

1
Sì, hai ragione, ma sono perplesso su come farlo su uno stack Ubuntu 10.4 predefinito, in cui l'intero shenanigans è gestito con directory disponibili e abilitate per i siti e ogni definizione di host virtuale esiste nella sua esclusiva file ... come posso controllare l'ordine in quel caso?
Victor S,

I file vengono caricati in ordine alfabetico (l'ordinamento predefinito per ls).
user9517

1
per una definizione di sito che deve venire prima, chiamala come 000-excluded.example.com.confnella directory dei siti disponibili.
Brian Minton,

Stavo cercando di fare esattamente la stessa cosa, e questo non funziona per me. VirtualHost excluded.example.com che aveva "ServerName excluded.example.com \ n Redirect / example.com/excluded " ha causato il reindirizzamento di tutte le richieste al VirtualHost più generale (che ha sicuramente seguito il VirtualHost specifico nella configurazione).
Quuxman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.