O Apache VirtualHost com ProxyPass para o servidor node.js se recusa a funcionar ('Não foi possível resolver o nome do host')

2

Estou executando o Apache local no meu mac para desenvolvimento e também tenho o servidor node.js em execução em http://127.0.0.1:8000/ .

Eu uso o .dev domain para projetos do Apache e gostaria que .node domain redirecionasse para o servidor node.js. Eu tenho hosts virtuais configurados da seguinte forma:

<VirtualHost *.dev:80>
    VirtualDocumentRoot "/www/sites/%1/wwwroot"
    ServerName sites.dev
    ServerAlias *.dev
    UseCanonicalName Off
</VirtualHost>

<VirtualHost *.node:80>
    ServerName sites.node
    ProxyPass "/" "http://localhost:8000"
    ProxyPassReverse "/" "http://localhost:8000"
</VirtualHost>

No entanto, quando tento aplicar essas configurações, recebo o erro:

[core:error] [pid 8594] (EAI 8)nodename nor servname provided, or not known: 
AH00547: Could not resolve host name *.node -- ignoring!

Devo observar que .dev domain funciona como esperado e o servidor node.js está acessível em http://localhost:8000/ , mas não em http://test.node/ , por exemplo.

Estou faltando alguma coisa aqui?

    
por CBlew 17.08.2017 / 22:00

2 respostas

1

Você não odeia quando as pessoas cometem erros de novato e correm para trocar de pilha por uma resposta?

Veja o que está sendo mal feito aqui:

  1. Certificar-se de que o domínio personalizado realmente resolva para localhost é sempre uma coisa kosher a ser feita.

Para o dnsmasq do homebrew no mac, isso fará o truque:

echo 'address=/.no/127.0.0.1' > $(brew --prefix)/etc/dnsmasq.conf

E, em seguida, o OS X deve ser solicitado a procurar localmente no domínio personalizado:

sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/no'

Domínios personalizados 101 realmente.

  1. A regra do VirtualHost para o redirecionamento de proxy deve aparecer o mais rápido possível no arquivo de configuração. Caso contrário, o Apache pode redirecionar sua solicitação de domínio personalizada para localhost sem anexar a porta personalizada :8000 .

Assim:

<VirtualHost *.no:80>
    ServerName sites.no
    ProxyPreserveHost On
    ProxyPass "/" "http://localhost:8000/"
    ProxyPassReverse "/" "http://localhost:8000/"
</VirtualHost>

<VirtualHost *.dev:80>
    VirtualDocumentRoot "/www/sites/%1/wwwroot"
    ServerName sites.dev
    ServerAlias *.dev
    UseCanonicalName Off
</VirtualHost>
  1. O domínio personalizado .node não é atualmente um domínio de nível superior válido, de acordo com a IANA . Alterá-lo para algo válido, como .no , impede que o maldito Safari inicie a pesquisa do Google em solicitações como test.no . (Diga adeus aos sites reais .no por aí).

E Robert é o irmão do seu pai.

    
por 18.08.2017 / 14:13
0
<VirtualHost *.dev:80>
    VirtualDocumentRoot "/www/sites/%1/wwwroot"
    ServerName sites.dev
    ServerAlias *.dev
    UseCanonicalName Off
</VirtualHost>

<VirtualHost *.node:80>
    ServerName sites.node
    ProxyRequests on
    RewriteEngine on
    <Proxy *>
             Order deny,allow
             Allow from all
    </Proxy>
    ProxyPass "/" "http://localhost:8000"
    ProxyPassReverse "/" "http://localhost:8000"
</VirtualHost>

Como isso funciona?

    
por 17.08.2017 / 22:16