Procuro aplicativos Node Express independentes por meio do Nginx.
Assim, novos aplicativos podem ser facilmente montados e também posso executar outras coisas no mesmo servidor em locais diferentes.
Aqui estão mais detalhes sobre minha instalação com o exemplo de configuração do Nginx:
Implante vários aplicativos Nó em um servidor Web em subpastas com Nginx
As coisas ficam complicadas com o Node quando você precisa mover seu aplicativo do host local para a Internet.
Não há uma abordagem comum para a implantação do nó.
O Google pode encontrar vários artigos sobre esse tópico, mas eu estava lutando para encontrar a solução adequada para a instalação necessária.
Basicamente, eu tenho um servidor web e quero que os aplicativos Node sejam montados em subpastas (por exemplo, http: // myhost / demo / pet-project / ) sem introduzir nenhuma dependência de configuração no código do aplicativo.
Ao mesmo tempo, quero que outras coisas, como o blog, sejam executadas no mesmo servidor da web.
Parece simples né? Aparentemente não.
Em muitos exemplos, os aplicativos do nó da web são executados na porta 80 ou são proxy pelo Nginx na raiz.
Embora ambas as abordagens sejam válidas para certos casos de uso, elas não atendem aos meus critérios simples, mas um pouco exóticos.
Por isso, criei minha própria configuração do Nginx e aqui está um extrato:
upstream pet_project {
server localhost:3000;
}
server {
listen 80;
listen [::]:80;
server_name frontend;
location /demo/pet-project {
alias /opt/demo/pet-project/public/;
try_files $uri $uri/ @pet-project;
}
location @pet-project {
rewrite /demo/pet-project(.*) $1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $proxy_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://pet_project;
proxy_redirect http://pet_project/ /demo/pet-project/;
}
}
Neste exemplo, você pode perceber que eu monto meu aplicativo Nó do Projeto Pet em execução na porta 3000 para http: // myhost / demo / pet-project .
Primeiro, o Nginx verifica se o recurso solicitado é um arquivo estático disponível em / opt / demo / pet-project / public / e, se for o caso, serve como altamente eficiente, portanto, não precisamos ter uma camada redundante como o Connect middleware estático.
Todas as outras solicitações são substituídas e submetidas a proxy no aplicativo Pet Project Node , para que o aplicativo Node não precise saber onde ele está realmente montado e, portanto, pode ser movido para qualquer lugar apenas pela configuração.
proxy_redirect é necessário para manipular o cabeçalho do local corretamente. Isso é extremamente importante se você usar res.redirect () no aplicativo Node.
Você pode replicar facilmente essa configuração para vários aplicativos Node em execução em portas diferentes e adicionar mais manipuladores de local para outros fins.