Gerenciando lotes do Apache vhost ServerAliases

2

Então, eu tenho este site que está sendo servido como um host virtual pelo Apache 2. E ele tem uma tonelada métrica de nomes de domínio alternativos que todos devem resolver para ele.

Até agora, lidei com coisas desse tipo adicionando os domínios extras na lista ServerAlias no arquivo de configuração do vhost. Mas como o número de domínios com alias cresceu mais, essa lista ficou extremamente longa e pesada. Também é necessário adicionar o domínio e a versão 'www' separadamente, o que (já que tenho que lembrar de adicionar os dois) deixa espaço para eu ser um idiota e esquecer de adicionar um ou outro. Ainda não aconteceu, mas quando a lista é longa o suficiente omissões como essa não saltam para você do jeito que fazem quando há apenas alguns domínios, então eu me preocupo que seja inevitável algum dia.

Parece que deve haver uma maneira de eliminar a lista de aliases do arquivo de configuração do vhost para algum outro lugar onde eles possam ser gerenciados mais facilmente. Até mesmo um arquivo de texto com cada pseudônimo em sua própria linha seria uma melhoria, já que pelo menos seria mais fácil examinar visualmente a lista do que com uma longa linha separada por vírgulas. E parece que deve haver uma maneira de o subdomínio 'www' ser tratado automaticamente para o vhost, em vez de precisar adicionar manualmente um alias 'www' para cada domínio. Mas eu tenho procurado por coisas assim e ainda não encontrei nenhuma solução óbvia.

Isso provavelmente é só que eu não estou olhando no lugar certo, mas apenas no caso - existe uma maneira mais elegante de lidar com o ServerAliases para um vhost? E se sim, o que é isso?

    
por jalefkowit 11.05.2012 / 22:56

4 respostas

2

Você pode incluir configurações arbitrárias de um arquivo externo usando a diretiva Include no lugar da opção real que deseja extrair de um arquivo. (há também uma opção mod_perl, se você for um assistente perl do old-skool; -)

1. use a diretiva Include , para incluir uma lista de ServerAlias de um arquivo de texto em conf.d/mydomain.conf da mesma forma;

<VirtualHost *:80>
    ServerName www.mydomainname.com 
    # instead of ServerAlias, include a file containing those directives
    Include /etc/httpd/conf/MyDomainServerAlias.list
...
</VirtualHost>

Em seguida, gere a lista com a diretiva ServerAlias prefixada assim em /etc/httpd/conf/MyDomainServerAlias.list ;

ServerAlias mysqdomain.com www2.mysqdomain.com www.mysqdomain.com www.mysqdomain.com www.mysqdomain.com www.mysqdTTTomain.com www.mCCysqdomain.com www.mysqdomain.com

ou um por linha, pois isso pode ser mais conveniente para inspeção e script;

ServerAlias mysqdomain.com 
ServerAlias www.mysqdomain2.com 
ServerAlias mysqdomain2.com 
ServerAlias www.mysqdomain.com

2. você pode configurar dinamicamente o apache usando <Perl> bloqueia usando mod_perl

 <Perl>
  $ServerName = 'hostname';
  $ServerAlias = 'somethingelse.com';
  </Perl>

Assim, você pode usar qualquer magia Perl que você quiser para configurar uma lista de Aliases na inicialização; -)

3. provavelmente algumas outras maneiras (mais simples ;-) ...

    
por 11.05.2012 / 23:22
0

Você pode repetir a linha ServerAlias no seu arquivo de configuração vhost várias vezes. Acho que mais perto de um texto estúpido. No entanto, você deve se lembrar de adicionar o www ...

    
por 11.05.2012 / 23:16
0

E se você configurar seu site "pega-tudo" no contexto principal, fora do escopo ? Então você precisará de ServerAlias apenas para domínios que devem ser sites virtuais distintos.

    
por 11.05.2012 / 23:35
0

Que tal escrever um programa para preencher essas linhas para você? Em um aplicativo semelhante eu tenho um VHost por nome e cerca de 50 nomes para cuidar e eu tenho Puppet gerá-los. Eu apenas listo:

mySite::newSite{ 'example.com': }

E gera dois VHosts (um para a porta 80, um para a porta 443) com example.com e www.example.com . Isso significa ter um arquivo cheio dessas mySite::newSite linhas, mas isso é menos ruim:)

Você não precisa usar o Puppet, qualquer idioma pode ajudar com isso. Arquivos Ruby erb são uma opção.

    
por 12.05.2012 / 00:09