Como apontar subdomínios para IPs locais diferentes

3

Minha pergunta é a mesma com Como para apontar um subdomínio para o servidor local com IP dinâmico . A diferença é que eu tenho um IP estático do meu provedor, acho que não preciso usar o DynDNS, certo? Então, o que posso usar em vez disso?

Meu objetivo é apontar cada subdomínio para um servidor da Web diferente como este:
mydomain.com - > 192.168.1.100 (servidor web principal)
sub1.mydomain.com - > 192.168.1.101 (servidor web 1)
sub2.mydomain.com - > 192.168.1.102 (servidor web 2)

Eu tentei usar o módulo proxy do Apache, siga as instruções aqui mas não consegue. Quando eu acesso a sub1.mydomain.com pelo navegador, ele sempre leva a mydomain.com.
Posso fazer isso por essa abordagem? se não por favor me mostre outra maneira.

Eu uso o Ubuntu Server 12.04

[RESOLVIDO]
Solução

  1. Configurar DNS

O ponto de registro para IP público:
1 @ public.ip
2 www public.ip

O registro CNAME aponta para subdomínio:
1 sub1 mydomain.com
2 sub2 mydomain.com

  1. Configurar o Apache.

Adicione sub1 e sub2 a /etc/apache2/sites-available

sub1:

<VirtualHost *:80>    
        ServerName sub1.mydomain.com    
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>    
        <Location />
                ProxyPass http://192.168.1.101/
                ProxyPassReverse http://192.168.1.101/
        </Location>    
</VirtualHost>

sub2:

<VirtualHost *:80>    
        ServerName sub2.mydomain.com    
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>    
        <Location />
                ProxyPass http://192.168.1.102/
                ProxyPassReverse http://192.168.1.102/
        </Location>    
</VirtualHost>
    
por thang nhoc 09.08.2012 / 06:12

3 respostas

1

Eu apenas recentemente fiz isso. Veja minha pergunta . Foi meio que um longo caminho de ida e volta, mas eu consegui configurar no final.

  • Configure o DNS. O registro A apontará para o seu IP público. Então, yourdomain.com aponta para your.pub.ip.add. Adicione registros CNAME para os subdomínios. Assim, sub1.seudomínio.com aponta para @ e sub2.seudominio.com aponta para @ , etc. Embora os subdomínios estejam todos apontando para o mesmo endereço, o navegador irá conferir ao servidor qual subdomínio você está tentando para alcançar.

  • Configure o Apache. Você desejará configurar Hosts Virtuais para cada subdomínio (e talvez para o domínio principal também). Você pode definir os Hosts Virtuais em lugares diferentes ... o meu é definido em /etc/apache2/sites-available e inclui a diretiva <Location> , que é onde você configurará seu proxy reverso.

por 09.08.2012 / 14:57
3

Isso não é realmente um problema do servidor da Web, ele deve ser resolvido no seu DNS. Você controla o DNS por mydomain.com , certo? Portanto, adicione A registros para os subdomínios que apontam para os endereços IP relevantes, assegure-se de que esses endereços sejam atendidos por servidores da web que saibam que devem estar servindo esses domínios, e todos funcionarão.

Ter todas as solicitações de subdomínio passando pelo servidor principal para mydomain.com , como algum tipo de balanceador de carga estranho, é ineficiente e desnecessário.

Editar : desculpe, eu não sabia que você estava usando 192.168.0.0/16 endereços para indicar que seus servidores de subdomínio estavam em uma rede interna; Eu pensava que você estava apenas redigindo os endereços como você tinha redigido os nomes de domínio.

Então: todos os servidores da web na rede interna? Ou apenas os subdomínios? Se este último, que tipo de conexão VPN existe atualmente entre o servidor web principal e os servidores internos?

    
por 09.08.2012 / 12:25
0

Se eu entendi corretamente, aqui está sua situação:

  • Você tem um único endereço IP externo
  • Você tem vários servidores da Web internos (como em: máquinas físicas ou VMs diferentes, não apenas raízes da Web diferentes no mesmo servidor da Web)

Nesse caso, você não pode confiar em usar um IP diferente para cada domínio porque, bem, você tem apenas um. Você não pode simplesmente dizer ao Apache para usar o cabeçalho HTTP "host" para rotear para o subdomínio correto, porque você tem mais que a configuração do apache, tudo em diferentes IPs internos.

Nesse caso, eu usaria o Squid no modo de proxy reverso: Instale-o em uma máquina "simples" e faça com que ele redirecione as solicitações para cada servidor da Web, local ou remoto.

É muito fácil configurar: confira esta página da documentação padrão do squid, pois ela descreve exatamente o que você quer fazer: link

Por favor, não que usando um proxy reverso pode causar alguns problemas com a compatibilidade de aplicativos e que a configuração de SSL é delicada em tal cenário (mas isso pode ser feito).

    
por 09.08.2012 / 15:50