Redirecionando para outros servidores internos com base no subdomínio

2

Aqui está minha situação

rede doméstica, máquinas com Windows, 1 endereço IP externo (que permite a porta 80) 1 windows home server sempre na máquina, planejando atualizar para o WHS 2011 em breve. várias câmeras IP que usam seu próprio servidor da web e são acessadas diretamente.

Meu problema / meta:

Id gostaria de poder acessar externamente minhas câmeras IP e servidores em minha rede doméstica por subdomínio, pela porta 80. ex: cam1.mydomain.com, cam2.mydomain.com, nas.mydomain.com, etc.

No momento, eles estão configurados com o encaminhamento de porta, mas muitas redes em que eu trabalho têm todas as portas não padrão bloqueadas, portanto, preciso que todas estejam na porta 80. Pelo que entendi, isso não pode ser feito no nível do roteador e precisaria ser feito no nível do servidor, o que é bom.

Em essência, isso é apenas roteamento interno para servidores diferentes, dependendo do subdomínio, que eu estou esperando é um problema comum com uma solução relativamente simples.

deixe-me saber se eu deixei alguma coisa de fora. obrigado antecipadamente.

(btw, o IIS é preferível ao apache se todas as coisas forem iguais)

    
por ELG 25.05.2011 / 17:57

2 respostas

1

Se você está acessando os serviços via HTTP (ou seja, em um navegador da Web diretamente, em vez de um plug-in ou algum outro aplicativo cliente), pode fazer isso usando algo como nginx como proxy reverso - ele pode escolher para onde enviar cada solicite proxies para dependendo da linha de cabeçalho "host" de entrada (por ter uma diretiva "servidor" para cada subdomínio com suas próprias configurações de passagem de proxy).

Você não seria capaz de fazer isso em seu roteador, a menos que esteja executando algum firmware personalizado que execute (ou permita que você instale) um programa como o nginx que pode atuar como um proxy reverso como este, mas se você portar encaminhar o TCP80 para uma máquina rodando nginx, então a técnica funcionará.

link dá um exemplo de configuração para o nginx como um proxy reverso (haverá muitos outros exemplos se você preciso de mais). Muitos outros servidores da Web ou quaisquer aplicativos projetados especificamente para fornecer serviços de proxy reverso devem ser capazes de fazer isso para você. O Apache pode se você tiver o mod_proxy (que o IIRC geralmente está presente mas não é carregado por padrão). IIRC IIS não pode sem add-ons de 3ª parte (o que pode custar), mas existem versões do Windows da maioria das ferramentas de código aberto que podem fazer o trabalho, então você ainda pode usá-las um ambiente totalmente Windows.

    
por 25.05.2011 / 18:20
0

Você pode fazer isso executando uma instância do apache em seu endereço público (na prática isso significa encaminhar a porta 80 do roteador para qualquer caixa interna que possa executar o apache para você) e definir um host virtual para cada um dos subdomínios e usando o proxy pass para passá-lo para os endereços reais e internos:

<VirtualHost *:80>
    ServerName cam1.domain.com

    ProxyRequests Off
        <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyErrorOverride On                       
    ProxyPass / http://192.168.1.123/
    ProxyPassReverse / http://192.168.1.123/
    <Location />
    Order allow,deny
        Allow from all
    </Location>

</VirtualHost>


<VirtualHost *:80>
    ServerName cam2.domain.com

    ProxyRequests Off
        <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyErrorOverride On                       
    ProxyPass / http://192.168.1.124/
    ProxyPassReverse / http://192.168.1.124/
    <Location />
    Order allow,deny
        Allow from all
    </Location>

</VirtualHost>

Onde cam1 é internamente 192.168.1.123 e cam2 192.168.1.124 etc.

    
por 25.05.2011 / 18:20