Configurando aplicação Nodejs com proxy reverso Nginx

O Node.js é um ambiente de tempo de execução JavaScript de software livre para a fácil criação de aplicativos do lado do servidor e de rede. A plataforma é executada no Linux, OS X, FreeBSD e Windows. Os aplicativos Node.js podem ser executados na linha de comando, mas nos concentramos em executá-los como um serviço, para que eles sejam reiniciados automaticamente na reinicialização ou falha e possam ser usados com segurança em um ambiente de produção.

Neste tutorial, abordaremos a configuração de um ambiente Node.js pronto para produção em dois droplets servidor Ubuntu. Um servidor (appserver) será responsável por executar um aplicativo Node.js gerenciado por PM2 e fornecerá aos usuários acesso seguro ao aplicativo por meio de um proxy reverso Nginx que será responsável do segundo servidor (webserver).

Para essa configuração será necessária:

2 droplets na digitalocean. Sendo os dois no mesmo datacenter e com rede privada ativada.

Instalar o Node.js

Instalaremos a versão mais recente do Node.js, usando os arquivos do pacote NodeSource. Lembrando que será executado no servidor de aplicação.

Primeiro, você precisa instalar o NodeSource PPA para obter acesso ao seu conteúdo.

Após a conclusão da instalação, você pode verificar se foi realizada com sucesso usando o comando node -v.

Aplicação de teste

Com o node instalado, podemos executar o download de uma aplicação de servidor nodejs de teste. Basta criar um novo diretório, acessá-lo e baixar os arquivos:

Após a conclusão do download, vamos alterar o IP ADDRESS, copiando o ip do nosso droplet de aplicação e substituir na seguinte linha:

APP_PRIVATE_IP_ADDRESS

Após a configuração do servidor node de exemplo, podemos instalar o pm2 que será responsável por gerenciar os processos que serão executados no backend do servidor de aplicação nada digitalocean.

Com a finalização da instalação do pm2, podemos iniciar o processo do servidor node com o seguinte comando:

Aplicativos que estão sendo executados em PM2 serão reiniciados automaticamente se o aplicativo falhar ou for interrompido, mas uma etapa adicional precisa ser executada para que o aplicativo seja iniciado na inicialização do sistema (inicialização ou reinicialização). Felizmente, o PM2 fornece uma maneira fácil de fazer isso, o subcomando de inicialização.

O subcomando de inicialização gera e configura um script de inicialização para iniciar o PM2 e seus processos gerenciados nas inicializações do servidor:

Agora no droplet do webservidor, vamos configurar o nginx que irá realizar o proxy reverso para o segundo droplet responsável pela aplicação nodejs.

O primeiro passo é verificar se estamos com acesso ao droplet, para isso teste o segundo comando:

Com a instalação do nginx realizada, vamos acessar o seguinte arquivo sudo vim /etc/nginx/sites-available/default, nele vamos alterar o bloco location, deixando da seguinte forma:

Após a finalização das alterações, basta reiniciar o servidor nginx e acessar o IP do droplet de servidor web.

sudo service nginx restart

Fonte de pesquisa: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04