Skip to content

Colocando a aplicação em produção com NGINX

Laércio Silva edited this page Nov 25, 2016 · 2 revisions

Colocando a aplicação em produção com NGINX

Como sabemos softwares feitos com python/Django e node.js/Express, são excelentes em relação a produtividade de produção, mas quando o a aplicação inteira é colcoada em cima dessas tecnologias, a perfomace reduz consideravelmente. Nesse tutorial vamos aprender a como colcoar uma aplicação em produção integrando com NGINX visando o aumento da perfomace da aplicação, atendendo mais usuários com os mesmos recursos. Dessa forma iremos criar dois servidores, proxy server do nginx com Django ou Express e também um servidor static server pelo qual será usado para o processamento de arquivos estáticos. Dessa forma é possível diminuir o número de requisições diretas a aplicação.

Instalando o NGINX na sua versão mais recente

(Foi utilizado sistema ubuntu na instalação)

Execute os comandos em sequência:

* sudo apt-get update
* sudo apt-get sudo apt-get install nginx
* sudo service nginx start
* sudo update-rc.d nginx defaults

Os ultimos dois comandos iniciam a aplicação e a definição para executar a aplicação quando o sistema for iniciado, repectivamente.

Configurando servidor

Agora vamos configurar o NGINX para que ele comece a servir os arquivos estáticos para o própria aplicação, node ou django, não precisar fazer isso. Essas configurações serão realizadas dentro do arquivo principal do ngix, chamado "nginx.conf". No ubuntu a localização dele se encontra: "/etc/nginx/nginx.conf".

Arquivo nginx.conf melhorado--→>>

worker_processes 1;
events {
  worker_connections 1024;
}
http {
  include mime.types;
  default_type application/octet-stream;
  sendfile on;
  keepalive_timeout 65;
  gzip on;

  server {
	listen 80;
	server_name localhost;
	access_log logs/access.log;

	location /static {
	  root /meuapp/public;
	  expires max;
	}
	location / {
	  proxy_pass http://localhost:3000;
    }
  }
}

Para melhorar a perfomace habilitamos o gzip, em "gzip on", os arquivos vão compactados para o cliente e lá são descompactados, a performace da aplicação como um todo é melhorada visto que GZIP consegue em média reduzir o tamanho dos arquivos estáticos em 50%. O servidor conseguirá atender mais usuários com a mesma largura de banda.

Em "location /static{" definimos a rota dos arquivos estáticos da aplicação. No caso "/static" será o caminho no site para os arquivos estáticos e em "root" será o caminho absoluto dentro da maquina para os arquivos estáticos. Dentro do location também é colocado "expires max" um cache simples.

location / {
  proxy_pass http://localhost:3000;
}

No último location, o location /, vai para a raiz da aplicação sendo ela um proxy da nossa aplicação, node.js ou python, que está rodando em localhost:3000.

Mas então quer dizer que se eu quiser rodar a aplicação em um servidor e os arquivos estáticos em outro eu posso? Sim, pode! Inclusive pode se fazer isso para aumentar ainda mais a perfomace do servidor e atenter mais usuários.

Clone this wiki locally