Apache Total Wildcard DNS

1

Eu estou no processo de escrever um script que vou lançar em uma carga de servidores web. Isso permitirá que eu hospede milhares de sites em cada um deles ... Parte do script está adicionando novos domínios e subdomínios em um banco de dados. Enquanto estou fazendo isso, eu preciso [a] adicionar cada domínio ao meu virtualhosts usando php (eu não sei como fazer isso), ou [b] adicionar algum tipo de DNS curinga onde qualquer domínio apontou para o meu servidor usar um registro A irá para o mesmo arquivo / diretório, onde ele será classificado usando htaccess e PHP (a melhor opção que eu acho). Alguma idéia?

Ele precisa ser totalmente controlado pelo banco de dados. Assim, quando você for test.com, ele servirá updomain.com/index.php?s=test.com&f=file.htm, que extrairá e exibirá algum conteúdo do MySql.

Ele precisa ser assim por razões que não valem a pena entrar, então presumivelmente eu precisarei fazer algumas coisas de vhost para fazer tudo ir para dedicateddomain.com e fazer o resto com htacess / modrewrite?

    
por zuk1 28.07.2009 / 11:04

4 respostas

1

Você examinou mod_vhost_alias ?

Talvez você não precise reinventar a roda.

    
por 28.07.2009 / 11:59
1

Eu tenho uma configuração parecida, permitindo a rolagem de milhares de domínios em uma plataforma específica que desenvolvi.

(Observe que, se quiser ter vários subdomínios dinâmicos, isso pode ser feito com uma entrada DNS * .domain.com de caractere curinga para um IP e um ServerAlias em um de seu host virtual * .domínio.com -, mas desde isso é bem simples, eu não vou mais além e explico como uma configuração no domínio dinâmico pode ser configurada)

Eu não vou lhe dizer qual é a melhor maneira, já que acredito que não há tais coisas, existem várias maneiras de fazer o que você está tentando alcançar: Eu só espero que, ao lançar alguma luz sobre a minha configuração, pode ajudar você.

Adicionar o domínio ao servidor DNS deve ser automatizado por algum script (prefiro ter essa funcionalidade em um script bash e mantê-lo separado do PHP ou de qualquer outra linguagem).

O script que cuida de tudo é muito longo, mas o racional é simples:

Adicionar um domínio
 1. Calcular o número de série (data + algum número incremental)
 2. Verifique se o domínio existe  3. Validar o IP (se você for usar vários IP em todo o seu sistema, se não, você pode ter este bit estático)
 4. Adicione ao named.conf a referência de zona de domínio
 5. Crie o arquivo zone.db

Remover um domínio
 1. Diminuir a série
 2. Remover a referência de zona de domínio do named.conf
 3. Remova o arquivo zone.db

Como o Serverfault realmente não mostra o script bash de uma maneira boa (e meu script é longo de qualquer forma), eu postei isso para pastebin, você pode encontre o script aqui

Então você precisa cuidar do virtualhost, é muito fácil se você estiver usando o apache 2.2, você só precisa escrever um script que crie um arquivo $ domain.conf onde todas as diretivas são especificadas.

O terceiro estágio seria usar algum tipo de RewriteRule que passará o domínio para um index.php onde você poderá redirecionar internamente esse domínio para a estrutura relevante.

Eu acredito neste esquema, já que este é um esquema que permitirá que você faça alterações e ajustes facilmente no futuro.

Espero que tenha ajudado.

    
por 28.07.2009 / 12:09
0

Se você deseja que as mesmas configurações sejam aplicadas a qualquer solicitação da Web, independentemente do nome do host, basta definir os parâmetros de configuração desejados fora de uma sub-rotina vhost, o que significa que ele é "por padrão" para qualquer solicitação é possível combinar qualquer um dos vhosts definidos.

    
por 28.07.2009 / 11:40
0

O vhosting baseado em nome em combinação com o DNS curinga pode ser uma combinação muito poderosa. Eu tinha um servidor com 4500 sites, e a configuração para ele era talvez 5 linhas maior do que um httpd.conf normal, além da configuração de caractere curinga no BIND. A melhor parte foi que uma vez configurado, você não precisa mais reconfigurar nada, basta criar outro diretório com o nome do domínio que deseja chamar, colocar algum conteúdo lá e pronto.

    
por 28.07.2009 / 15:40