Exclua domínios específicos do Apache2 serverAlias ao usar um alias catch all * (curinga)

8

Eu tenho um aplicativo da Web que precisa dar suporte a domínios personalizados, nesse sentido, configurei o seguinte servidor virtual baseado em 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>

Observe o * como o alias do servidor? que captura todos os domínios nesse servidor. No entanto, tenho outros sites neste servidor que pretendo ser excluído desta lista. É mais econômico para mim ter uma lista de domínios excluídos do que definir manualmente todos os domínios que um usuário pode registrar com esse serviço como um serverAlias ...

Talvez este não seja o melhor caminho a percorrer, mas eu estou procurando ajuda, da melhor maneira (relativamente simples) de configurar um aplicativo da web que pode capturar qualquer domínio, enquanto permite outros específicos domínios a serem roteados para aplicativos diferentes.

    
por Victor S 19.11.2011 / 18:12

1 resposta

10

O Apache procura uma correspondência na ordem em que os domínios são definidos. Se eu entendi o problema corretamente, então ele pode ser resolvido definindo seus hosts para serem excluídos antes de capturar todo o 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>
    
por 19.11.2011 / 23:03