Por que meu site não é exibido corretamente quando é acessado por outro computador na mesma LAN?

1

Estou executando um servidor da web (Ubuntu) na minha rede doméstica local. Estou atrás de um roteador. Na WAN eu tenho um IP direto. Quando não estiver em minha rede doméstica e acessando meu site por meio do IP direto da WAN, meu site será exibido corretamente e tudo funcionará.

Na minha LAN doméstica, atrás do roteador, acessar meu site pela WAN direto me leva à página de login do administrador do meu roteador. Isto é normal. Mas ...

Acessar meu site (através do seu endereço IP LAN residencial) de outro computador em minha rede doméstica me leva ao site, mas a exibição do layout está quebrada e clicar em qualquer link me leva ao endereço IP direto da WAN (página de login Admin do meu roteador ).

Como posso fazer com que meu site seja exibido corretamente e os links funcionem ao acessá-lo da minha LAN doméstica?

    
por TokyoDan 19.03.2011 / 22:43

4 respostas

4

Verifique seus URLs CSS e JavaScript. Talvez seja necessário alterná-los de links relativos para absolutos, já que parece que o roteamento de URL é diferente com base em como você tenta acessar o site.

A maneira mais fácil de fazer isso é examinar os recursos que o navegador está tentando carregar usando as ferramentas Firebug ou Developer (a guia Recursos). Verifique se suas folhas de estilo estão sendo carregadas corretamente (você deve ser capaz de selecioná-las e ver o conteúdo). Se não forem deles, ou se você receber um erro na guia Recursos, verifique a URL que o navegador está visualizando e verifique se é o URL correto.

Eu estaria disposto a apostar que o seu navegador está procurando por folhas de estilo no seu endereço IP da LAN, mas ele deve estar olhando para o endereço IP da WAN.

    
por 19.03.2011 / 22:50
1

Seu roteador não está fazendo "hairpin NAT" corretamente. Muitos gateways domésticos baratos têm um código NAT com bugs que não faz isso direito.

Parece que você já tem o recurso de mapeamento de porta do roteador (também conhecido como "encaminhamento de porta") ou DMZ (também conhecido como "host padrão", "host bastião" etc.), já que do lado da WAN Quando você aponta um navegador para o endereço IP da WAN pública do roteador, você obtém a página do seu servidor da Web.

Mas se você estiver na sua rede interna, quando se conectar ao endereço IP público de WAN do seu roteador, você ainda deve obter a página do servidor da Web, não a página de administração do seu roteador. Se o seu roteador quiser exibir sua página de administração quando você se conectar à porta 80 em seu endereço IP privado NAT, tudo bem. Mas não no endereço IP da WAN pública.

Quando você está em um cliente no lado privado do NAT e tenta acessar o servidor da Web diretamente pelo endereço IP privado do NAT, ele pode carregar o primeiro arquivo HTML com base em um URL como " link ", mas quando o navegador vai carregar o arquivo CSS e as imagens, provavelmente forma URLs como" link ", que significa o endereço IP da WAN pública do seu roteador, que, por causa do seu roteador com bugs, significa que o servidor da web de administração do seu roteador está interceptando essas solicitações e não tem esses recursos , então as coisas quebram.

    
por 21.03.2011 / 06:10
0

Você precisa de links relativos em vez de links absolutos. Então, em vez de algo assim em seu html:

<link rel="stylesheet" type="text/css" href="http://example.com/mysite.css" />
<img src="http://example.com/images/someimage.png"alt="Some Image" />

Você precisa que fique assim:

<link rel="stylesheet" type="text/css" href="/mysite.css" />
<img src="/images/someimage.png" alt="Some Image" />
    
por 21.03.2011 / 22:28
0

Ele está tentando carregar seu tema de fora da sua rede usando seu nome de domínio (ou seja, site.com)

Uma correção fácil é editar seu arquivo / etc / hosts e adicionar

IP.OF.LOCAL.WEBSERVER site.com sitehostname
    
por 29.10.2016 / 07:13

Tags