Pesquisa de site

Como configurar o Nginx como proxy reverso para o aplicativo Nodejs


Nodejs é uma estrutura JavaScript gratuita, de código aberto, leve, escalável e eficiente, construída no mecanismo JavaScript V8 do Chrome e usa um modelo de E/S sem bloqueio e orientado a eventos. O Nodejs está agora em toda parte e se tornou muito popular para desenvolver software de sites, aplicativos da web, aplicativos de rede e muito mais.

Nginx é um servidor HTTP de código aberto e de alto desempenho, balanceador de carga e software de proxy reverso. Possui uma linguagem de configuração simples, facilitando a configuração. Neste artigo, mostraremos como configurar o Nginx como proxy reverso para aplicações Nodejs.

Leia também: O guia definitivo para proteger, fortalecer e melhorar o desempenho do servidor Web Nginx

Nota: Se o seu sistema já estiver rodando com Nodejs e NPM, e seu aplicativo estiver rodando em uma determinada porta , vá direto para a Etapa 4.

Etapa 1: Instalando Nodejs e NPM no Linux

A versão mais recente do Node.js e do NPM está disponível para instalação no repositório oficial de distribuições binárias NodeSource Enterprise Linux, Fedora, Debian e Ubuntu, que é mantido pelo site do Nodejs. e você precisará adicioná-lo ao seu sistema para poder instalar os pacotes Nodejs e NPM mais recentes, conforme mostrado.

No Debian/Ubuntu

---------- Install Node.js v11.x ---------- 
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

No CentOS/RHEL e Fedora

---------- Install Node.js v11.x ---------- 
curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -

Etapa 2: Criando um aplicativo Nodejs

Para fins de demonstração, criaremos um aplicativo de exemplo chamado “sysmon”, que será executado na porta 5000 conforme mostrado.

sudo mkdir -p /var/www/html/sysmon
sudo vim /var/www/html/sysmon/server.js

Copie e cole o seguinte código no arquivo server.js (substitua 192.168.43.31 pelo IP do seu servidor).

const http = require('http');

const hostname = '192.168.43.31';
const port = 5000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('Sysmon App is Up and Running!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

Salve o arquivo e saia.

Agora inicie seu aplicativo de nó usando o seguinte comando (pressione Ctrl+x para encerrá-lo).

sudo node /var/www/html/sysmon/server.js
OR
sudo node /var/www/html/sysmon/server.js &   #start it in the background to free up your terminal

Agora abra um navegador e acesse sua aplicação na URL http://198.168.43.31:5000.

Etapa 3: Instale o proxy reverso Nginx no Linux

Instalaremos a versão mais recente do Nginx do repositório oficial, conforme mostrado abaixo.

No Debian/Ubuntu

Crie um arquivo chamado /etc/apt/sources.list.d/nginx.list e adicione as seguintes linhas a ele.

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

Em seguida, adicione a chave de assinatura do repositório, atualize o índice de pacotes do sistema e instale o pacote nginx da seguinte maneira.

wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
sudo apt update
sudo apt install nginx

No CentOS/RHEL e Fedora

Crie um arquivo chamado /etc/yum.repos.d/nginx.repo e cole uma das configurações abaixo.

CentOS
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
RHEL
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

Nota: Devido às diferenças entre o CentOS e o RHEL, é necessário substituir $releasever por 6 (para 6.x) ou 7 (para 7.x), dependendo da versão do seu sistema operacional.

Em seguida, adicione a chave de assinatura do repositório e instale o pacote nginx conforme mostrado.

wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
yum install nginx

Depois de instalar o Nginx com sucesso, inicie-o, habilite-o para inicialização automática na inicialização do sistema e verifique se ele está instalado e funcionando.

---------- On Debian/Ubuntu ---------- 
sudo systemctl status nginx
sudo systemctl enable nginx
sudo systemctl status nginx

---------- On CentOS/RHEL ---------- 
systemctl status nginx
systemctl enable nginx
systemctl status nginx

Se você estiver executando um firewall de sistema, será necessário abrir as portas 80 (HTTP), 443 (HTTPS) e 5000 (aplicativo Node), qual o servidor web escuta solicitações de conexão do cliente.

---------- On Debian/Ubuntu ---------- 
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5000/tcp
sudo ufw reload

---------- On CentOS/RHEL ---------- 
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload 

Etapa 4: configurar o Nginx como proxy reverso para aplicativo Nodejs

Agora crie um arquivo de configuração de bloco de servidor para seu aplicativo Node em /etc/nginx/conf.d/ conforme mostrado.

sudo vim /etc/nginx/conf.d/sysmon.conf 

Copie e cole a seguinte configuração (altere 192.168.43.31 com o IP do seu servidor e tecmint.lan com o seu nome de domínio).

server {
    listen 80;
    server_name sysmon.tecmint.lan;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://192.168.43.31:5000;
    }
}

Salve as alterações e saia do arquivo.

Finalmente, reinicie o serviço Nginx para efetuar as alterações recentes.

sudo systemctl restart nginx
OR
systemctl restart nginx

Etapa 5: acesse o aplicativo Nodejs via navegador da web

Agora você deve conseguir acessar seu aplicativo Node sem fornecer a porta em que ele está escutando, na URL: esta é uma maneira muito conveniente para os usuários acessá-lo.

http://sysmon.tecmint.lan 

Para que seu nome de domínio de teste funcione, você precisa configurar o DNS local usando o arquivo /etc/hosts, abri-lo e adicionar a linha abaixo nele (lembre-se de alterar 192.168.43.31 com o IP do seu servidor e tecmint.lan com o seu nome de domínio como antes).

192.168.43.31 sysmon.tecmint.lan

Isso é tudo! Neste artigo, mostramos como configurar o Nginx como proxy reverso para aplicações Nodejs. Use o formulário de feedback abaixo para fazer perguntas ou compartilhar suas idéias sobre este artigo.