Acesse todos os sites em um servidor através de um domínio compartilhado

2

Minha configuração é:

  • Nginx (80) como um proxy transparente
  • Apache (81) como servidor da web de backend

Os caminhos para cada domínio no servidor são assim:

/var/www/$username/data/www/$domainname

É claro que para acessar os arquivos, você precisa usar o nome de domínio de cada site. Mas eu quero uma maneira de acessar todos os domínios usando um URL como este:

http://dm.some.com/clientdomain.com 

Como posso fazer isso? Este URL será usado para acessar APENAS arquivos estáticos, então eu acho que será melhor usar o Nginx para isso.

    
por Jim 10.08.2012 / 20:06

1 resposta

1

O problema é determinar o nome de usuário de um domínio específico. Na verdade, obter o nginx para pesquisar todos os nomes de usuários para encontrar isso é complicado e não é ideal. Existem duas abordagens em que posso pensar.

Symlink todos os domínios em um diretório

Crie um diretório com links simbólicos para todos os domínios, por exemplo:

/srv/www/all/example.com -> /srv/www/alice/data/www/example.com
/srv/www/all/example.org -> /srv/www/alice/data/www/example.org
/srv/www/all/example.net -> /srv/www/bob/data/www/example.net

E, em seguida, basta configurar um host virtual em nginx com /srv/www/all como raiz.

Configurar manualmente o mapeamento em nginx

O módulo map é provavelmente o mais simples de manter.

map $uri $username {
    /example.com    alice;
    /example.org    alice;
    /example.net    bob;
}

root /srv/www;
rewrite ^/([^/]+)/(.*)$ /$username/data/www/$1/$2 last;
    
por 12.08.2012 / 22:11