Encaminhar um domínio específico na porta 80 para outro servidor dentro da intranet

2

Eu tenho um problema interessante, e pensei em ver o que vocês achavam que seria a melhor solução antes de tentar aleatoriamente coisas aleatórias.

Basicamente, eu tenho dois servidores (um Linux e um Windows) rodando na minha casa atrás de um roteador Linksys padrão. Neste momento, a porta 80 está sendo encaminhada para minha máquina Linux, porque ela hospeda vários sites. Mas com a adição do meu servidor Windows eu preciso disso para poder usar a porta 80 também. Obviamente, eu não posso ter o roteador encaminhando 80 para ambos, então eu estava me perguntando se havia uma maneira de ter o servidor Linux automaticamente (e de forma transparente) encapsulamento / encaminhamento / quaisquer solicitações com um determinado domínio para a máquina Windows. Assim, quando uma solicitação do domínio blah.example.com atingir o servidor Linux, eu quero enviá-la diretamente para o Windows Server para processar, e se for qualquer outro domínio, o servidor Linux deve processá-la e não encaminhá-la. Idealmente, eu gostaria que isso fosse feito de tal forma que o Windows Server não precise ser configurado especialmente: ele não deveria ser capaz de distinguir entre as solicitações encaminhadas pelo outro servidor ou as solicitações encaminhadas diretamente pelo roteador .

Eu entendo que isso pode exigir a modificação das tabelas de IP ou algo similar, e se for assim, por favor, vá devagar, porque eu nunca lidei com isso antes. Além disso, não tenho acesso físico no momento, apenas SSH, então, por favor, avise-me se qualquer coisa que você sugerir pode interromper / desabilitar a conexão SSH (o que seria muito ruim, obviamente). Qualquer ajuda é muito apreciada, obrigado antecipadamente! :)

    
por DataWizard 14.07.2011 / 22:17

3 respostas

2

Confira o mod_proxy do Apache ( link ). Basicamente, você configura um VHOST para forwardthistowindows.example.com e informa ao mod_proxy para passar todas essas solicitações para windows.example.com.

Verifique a documentação, mas provavelmente você vai querer algo como


ProxyPass / http://windows.example.com
    
por 14.07.2011 / 22:25
2

Caso você ainda não esteja usando o Apache em sua máquina Linux, eu não recomendo que você o use apenas para fazer isso, é um exagero e muito mais pesado com os recursos da máquina.

Eu recomendo que você use nginx : é leve, estável e usado por grandes sites como wordpress.com (veja aqui ). Da página sobre da nginx:

nginx [engine x] is a HTTP and reverse proxy server

Você vai querer usar o nginx como um proxy reverso - aqui está como fazer isso no Ubuntu . Eu também recomendo que você veja os exemplos oficiais de proxy wiki do nginx .

Edite de acordo com seus comentários:

Para que o IP real seja encaminhado para o host do Windows, defina este cabeçalho:

proxy_set_header  X-Real-IP  $remote_addr;

Espero que ajude.

    
por 14.07.2011 / 23:16
1

O que você provavelmente quer fazer é um proxy reverso. Assumindo que os outros sites no servidor linux estão rodando sob o Apache. Então, usando mod_proxy , sua configuração seria algo assim:

<VirtualHost *:80>
    ServerName externalwin.example.com
    ProxyPass / http://internal.example.com/
    ProxyPassReverse / http://internal.example.com/ 
</VirtualHost>

Existem muitas outras maneiras de configurar um proxy reverso com o Apache e com outro software de servidor web ou proxy.

A única coisa que você precisa configurar no servidor Windows é certificar-se de que quaisquer URLs produzidas por ele usem o endereço externo.

    
por 14.07.2011 / 22:42