Mapeie o aplicativo do nó js para o caminho do url no Apache

3

Gostaria de exibir um aplicativo do nó como um caminho do meu domínio, assim: o link realmente exibirá o aplicativo do nó em execução na porta 8080.

Eu olhei em ProxyPass e ProxyPassReverse:

ProxyPass /foo http://localhost:8080
ProxypassReverse /foo http://localhost:8080

Isso servirá o index.html do aplicativo do nó, mas recebo erros no meu console sobre todos os recursos:

Failed to load resource: the server responded with a status of 404 (Resource not found) http://example.com/styles/4742a4e8.main.css

Eu achei que a diretiva ProxyPassReverse cuidaria disso, mas aparentemente não. Eu tenho muito conhecimento limitado sobre o apache. Alguma idéia brilhante sobre como resolver isso?

Disclaimer: sim, eu olhei em muitos nodejs combinados com questões do apache, mas nenhum deles resolveu o problema de usar um subdiretório na url

    
por Creynders 12.03.2014 / 09:22

1 resposta

3

Estou preparando que http://example.com/styles/4742a4e8.main.css é realmente um arquivo no aplicativo JS de nó, portanto, refere-se a http://localhost:8080/styles/4742a4e8.main.css , mas está sendo referência no index.html do aplicativo do nó como /styles/4742a4e8.main.css

Com o proxy mapeando o que está acontecendo é quando você solicita

http://example.foo/foo/ está enviando uma solicitação que está retornando http://localhost:8080/index.html como está. Quaisquer referências dentro de index.html não são modificadas, então quando o navegador requisitar componenets ele está solicitando http://example.com/styles/4742a4e8.main.css , mas o arquivo só é realmente acessível via http://example.com/foo/styles/4742a4e8.main.css

se / styles / não for usado em example.com, você poderá adicionar

ProxyPass /styles http://localhost:8080/styles
ProxypassReverse /styles http://localhost:8080/styles

Mas isso pode se tornar complicado se você tiver muitos diretórios.

Outra abordagem seria usar caminhos relativos em seu aplicativo de nó. Então, em vez de index.html referenciando /styles/4742a4e8.main.css , referenciou styles/4742a4e8.main.css (sem barra). Isso pode se tornar complicado com caminhos aninhados em seu aplicativo de nó.

Uma solução adicional pode ser modificar o aplicativo node.js para que seja totalmente executado em localhost: / foo, para que o mapeamento de diretório seja o mesmo.

Não tenho certeza se alguma dessas soluções é ideal para o seu caso de uso, mas espero que você aponte na direção certa.

    
por 12.03.2014 / 11:08