Acessando localhost fora do servidor

0

Eu sou novo em node.js e estou tentando entender o que realmente está usando. Eu estou muito familiarizado com JavaScript, então a linguagem em si é autoexplicativa, mas o uso do Node.js é bem diferente da implementação do navegador.

Eu tenho meu próprio servidor virtual remoto e instalei o Node e o Gerenciador de Pacotes e tudo funciona conforme o esperado. Eu não sou exatamente um servidor extraordinário e tenho experiência limitada com as configurações do Terminal e do Apache.

Eu posso rodar meu servidor usando:

nodejs index.js

O que me dá: listening on *:3300 como esperado.

Eu posso acessar meu localhost do terminal usando: curl http://localhost:3300/ , o que me dá a resposta que eu espero.

Como o site que vincula ao meu servidor é https://example.com , estou tentando conectar-me a este servidor usando http://example.com:3300/ sem sucesso, pois recebi apenas ERR_CONNECTION_TIMED_OUT . Não tenho certeza de como obter acesso a ele.

    
por Shawn Holman 02.11.2017 / 21:06

2 respostas

0

Acessar localhost não é o problema, já que você já está ouvindo * (o que significa todas as interfaces). Para que alguém acesse seu servidor usando o nome "example.com", ele precisa resolver um ip que chegará ao seu servidor a partir da máquina cliente. O que isso significa depende do seu ambiente.

Para testar, se você estiver tentando acessar o site a partir da mesma máquina que está executando o node.js (que é adequado apenas para testes), sugiro adicionar o endereço de loopback ao cache de nome do sistema dns. / etc / hosts em unix e Windows \ system32 \ drivers \ etc \ hosts na maioria das janelas. Como dito, isso é bom apenas para testes: adicione a linha: 127.0.0.1 example.com ao final do arquivo em sua própria linha.

Para uso em produção, para que outras pessoas possam acessar seu site, você precisa de um provedor de dns (serviço de nome de domínio) para vincular seu nome ao seu ip público. Isso vai custar cerca de US $ 10 / ano. Você também precisa de um IP público que não seja bloqueado pelos isps de outras pessoas e, de preferência, um IP que não mude com muita frequência. Isso pode variar de redirecionamento facilitado (não recomendado, se apenas para limitações de largura de banda e disponibilidade) a pequenos aplicativos de hospedagem (de US $ 25 a US $ 100 por ano ou mais, dependendo do espaço e das necessidades de computação).

Ambos os serviços são oferecidos por provedores de nuvem, basta procurar por serviços de hospedagem em nuvem. Provedores populares incluem os serviços web daddy e amazon. Eu tive experiências melhores com a AWS.

Além disso, expor os nodejs a um ip público provavelmente não é a melhor idéia. Além disso, sugiro que você analise alguns middlewares, como o apache ou o nginx, para envolver seu aplicativo em algo que ouça as solicitações http da tradição.

Editar em resposta ao comentário:

Nesse caso, você deseja definir um caminho de URL parcial nas suas configurações do apache. Isso é conhecido como um proxy reverso, o que significa que você define uma regra para quais URLs / solicitações devem ser redirecionados (proxied) para node.js e o apache os direcionará para você. Veja os documentos do apache aqui e esta pergunta de falha do servidor:

link

link

Observe que os documentos do apache tendem a assumir que o aplicativo backend está sendo executado em outro servidor, mas funciona da mesma forma para o host local. Você quer diretivas proxypass e proxypassreverse.

    
por 02.11.2017 / 21:43
0

Em vez de const hostname = '127.0.0.1';

Fazer: const hostname = '0.0.0.0';

    
por 22.05.2018 / 18:14