Por que o localhost não resolve para 127.0.0.1 em uma determinada porta?

1

Eu tenho um servidor httpd em execução na porta 80 e shiny-server em execução na porta 3838. Quando tento curl 127.0.0.1:3838 Eu recebo o arquivo de índice sendo exibido no servidor brilhante. Mas quando tento curl localhost:3838 curl esgotar sem recuperar nenhum conteúdo. Por quê?

Aqui está o conteúdo do meu arquivo / etc / hosts:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
<my-ipv4-address> www.<mywebsite>.com <mywebsite>.com
<my-ipv6-address> www.<mywebsite>.com <mywebsite>.com

e os resultados de getent ahosts localhost

::1             STREAM localhost
::1             DGRAM  
::1             RAW    
127.0.0.1       STREAM 
127.0.0.1       DGRAM  
127.0.0.1       RAW    
    
por ichbinallen 05.02.2018 / 17:22

3 respostas

4

Como você pode ver em getent ahosts localhost , as entradas do IPv6 para o host local têm prioridade sobre as entradas do IPv4. (Veja man getent e man nss se você quiser saber porque esse comando ajuda).

Curl é dual stack e pode resolver endereços IPv6 e IPv4, portanto, usa o endereço IPv6. Mas o servidor brilhante não funciona com o IPv6, portanto, o tempo limite é atingido, conforme verificado ao usar o endereço IPv6 diretamente. OTOH, se você usa 127.0.0.1 , este é um endereço IPv4, então é bem-sucedido.

    
por 05.02.2018 / 18:09
0

Você precisa verificar como o seu servidor shyni está ouvindo exatamente (ipv4 ou pv6 ou ambos) com:

netstat -pantu |grep LIST

Deve ser um problema relacionado a uma restrição com o uso de "localhost" talvez ...

    
por 05.02.2018 / 18:10
0

Para corrigir, adicione a /etc/hosts

127.0.0.1 localhost shiny myWebsiteName

(anexe-o bem à linha existente).

Ainda melhor.

Configure seu servidor da web para ouvir em 127.0.0.2 e, em seguida, adicione a /etc/hosts

127.0.0.2 shiny myWebsiteName

(testado no Debian 8 e 9)

    
por 05.02.2018 / 19:03

Tags