Você está na página 1de 47
NGiNX, o motor da sua aplicação Web Ernani Azevedo
NGiNX, o motor da sua aplicação Web Ernani Azevedo
NGiNX, o motor da sua aplicação Web Ernani Azevedo
NGiNX, o motor da sua aplicação Web Ernani Azevedo
NGiNX, o motor da sua aplicação Web Ernani Azevedo

NGiNX, o motor da sua aplicação Web

Ernani Azevedo

NGiNX, o motor da sua aplicação Web Roteiro

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web O que é o NGiNX

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web O que é o NGiNX

Pronuncia-se “Engine X” (motor X);

Distribuído sob licença BSD;

Escrito por Igor Sysoev;

Utlizado em grandes portais da Internet (17,82% dos top 1M);

Servidor de alta performance e proxy reverso HTTP;

Suporte a IMAP/POP3;

10 anos em 2014;

Escrito tendo em mente quebrar a barreira C10K (htp://kegel.com/c10k.html);

Estrutura assíncrona de eventos;

Baixo consumo de recursos (memória e CPU);

Utlizado em diversos grandes sites, como Facebook, Netlix, Pinterest, CloudFare, GitHub, WordPress.com, Thumblr, Instagram, Cnet, Time.com, SoundCloud, Dropbox, MaxCDN, etc

NGiNX, o motor da sua aplicação Web O que é o NGiNX

NGiNX, o motor da sua aplicação Web O que é o NGiNX Fonte: Netcraft

Fonte: Netcraft

http://news.netcraft.com/archives/2014/04/02/april-2014-web-server-survey.html

NGiNX, o motor da sua aplicação Web O que é o NGiNX

NGiNX, o motor da sua aplicação Web O que é o NGiNX Fonte: Netcraft

Fonte: Netcraft

https://news.netcraft.com/archives/2018/11/26/november-2018-web-server-survey.html

NGiNX, o motor da sua aplicação Web O que é o NGiNX

NGiNX, o motor da sua aplicação Web O que é o NGiNX Fonte: W3Techs

Fonte: W3Techs

http://w3techs.com/technologies/cross/web_server/ranking

NGiNX, o motor da sua aplicação Web O que é o NGiNX

NGiNX, o motor da sua aplicação Web O que é o NGiNX Fonte: W3Techs

Fonte: W3Techs

http://w3techs.com/technologies/cross/web_server/ranking

NGiNX, o motor da sua aplicação Web O que é o NGiNX

NGiNX, o motor da sua aplicação Web O que é o NGiNX Fonte: The Atlantic

Fonte: The Atlantic

http://www.theatlantic.com/technology/archive/2013/12/welcome-to-the-internet-of-thingies-615-of-web-traffic-is-not-human/282309/

NGiNX, o motor da sua aplicação Web O que é o NGiNX

NGiNX, o motor da sua aplicação Web O que é o NGiNX Fonte: Incapsula

Fonte: Incapsula

https://www.incapsula.com/blog/bot-traffic-report-2016.html

NGiNX, o motor da sua aplicação Web A Web 2.0 e o futuro

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web A Web 2.0 e o futuro

Navegadores web mais robustos;

A era do JavaScript;

O navegador como interface para todas aplicações;

Serviços de streaming cada vez mais populares;

Volume de tráfego cada vez maior, devido a banda larga;

Compiladores C para web;

Aplicações cada vez mais dependentes de requisições AJAX.

NGiNX, o motor da sua aplicação Web O HTML5, e como isso muda a Web

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web O HTML5, e como isso muda a Web

Uso massivo de mult mídia;

WebSocket possibilitando aplicações P2P;

Guarda de dados locais (local storage);

Geo localização em massa.

NGiNX, o motor da sua aplicação Web Protocolo SPDY

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web Protocolo SPDY

Pronuncia-se Speedy (veloz);

Criado principalmente pela Google (marca registrada) em 2009;

Objetvo de reduzir a latência em páginas web;

Reduz o número de conexões atvas com o servidor;

Criptografa de dados utlizando TLS/SSL;

Compressão dos dados (gzip ou defate), incluindo cabeçalhos;

Multplexação do conteúdo;

Suportado pelo Google Chrome e o Chromium, e utlizado para muitos serviços da Google;

Suportado pelo Firefox 11 e SeaMonkey 2.8, mas habilitado por padrão apenas no Firefox 13 ou superior;

Suportado pelo Opera 12.10;

Suportado pelo Internet Explorer 11 (exceto para Windows 7).

NGiNX, o motor da sua aplicação Web Protocolo SPDY

Limitações

Apenas em conexões HTTPS;

Conexão apenas com um host, mesmo que todos sub domínios estejam no mesmo servidor, pois a mutplexação é baseada no host. Isto pode ocasionar múltplas conexões TCP para renderizar uma página.

NGiNX, o motor da sua aplicação Web Protocolo HTTP/2

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web Protocolo HTTP/2

Baseado no protocolo SPDY, publicado em Maio de 2015 via RFC 7540;

Mesmos objetvos e semântca do SPDY;

Protocolo é binário, ao invés de textual;

Compressão de cabeçalho HPACK;

Não requer TLS/SSL (HTTPS), mas implementação dos navegadores modernos requerem HTTPS;

Domain sharding multplexado (automatcamente);

Mesmo endereço IP para todos hosts;

Certfcado com máscara (em caso de HTTPS).

Suporte a extensão ALPN;

A partr da versão 1.9.5.

NGiNX, o motor da sua aplicação Web Protocolo HTTP/2

NGiNX, o motor da sua aplicação Web Protocolo HTTP/2 Fonte: UpWork

Fonte: UpWork

https://www.upwork.com/hiring/development/the-http2-protocol-its-pros-cons-and-how-to-start-using-it/

NGiNX, o motor da sua aplicação Web Protocolo HTTP/2

Server Push a partr da versão 1.13.9

htp2_tpush_tpreload para upstreams;

add_theader Link "</style.css>; as=style; rel=preload".

server { listen 443 ssl http2;

ssl_certificate ssl/certificate.pem; ssl_certificate_key ssl/key.pem;

root /var/www/html;

location = /index.html { http2_push /style.css; http2_push /imagem1.jpg; http2_push /imagem2.jpg;

}

}

/var/www/html; location = /index.html { http2_push /style.css; http2_push /imagem1.jpg; http2_push /imagem2.jpg; } }

NGiNX, o motor da sua aplicação Web Preparando o servidores para grandes cargas

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web Preparando o servidores para grandes cargas

Habilitar uso de eventos via epoll (Linux kernel 2.5.44 e glibc 2.3.2);

No FreeBSD, utlizar kqueue;

Habilitar workers para o número máximo de CPU's (veja o lscpu):

2.3.2); • No FreeBSD, utlizar kqueue; • Habilitar workers para o número máximo de CPU's (veja

NGiNX, o motor da sua aplicação Web Preparando o servidores para grandes cargas

Alterar o limite de recursos de arquivos por worker para 100000;

Alterar o limite de conexões por worker para 2048;

Habilitar múltplas conexões;

Confguração básica para grandes cargas:

worker_processes 16; worker_rlimit_nofile 100000;

events { worker_connections 2048; use epoll; multi_accept on;

}

worker_processes 16; worker_rlimit_nofile 100000; events { worker_connections 2048; use epoll; multi_accept on; }

NGiNX, o motor da sua aplicação Web Preparando o servidores para grandes cargas

Habilitar compressão gzip no módulo HTTP;

Podemos aumentar o tempo limite de keepalive, lembrando que conexões inatvas não consomem CPU e pouquíssima memória (e no máximo 200 requisições por conexão);

http { keepalive_timeout 65; keepalive_requests 200; gzip on; gzip_min_length 256; gzip_comp_level 3; gzip_types text/plain text/css application/json application/x-javascript text/html application/xml application/xml+rss text/javascript; default_type application/octet-stream; include /etc/nginx/mime.types;

}

application/xml+rss text/javascript; default_type application/octet-stream; include /etc/nginx/mime.types; }

NGiNX, o motor da sua aplicação Web Preparando o servidores para grandes cargas

Habilitar cache de metadados no módulo HTTP;

Esta confguração não possui parâmetro “on”, apesar de existr parâmetro “of”;

Confguração básica de cache de metadados no módulo HTTP:

http { open_file_cache max=10000 inactive=30s; open_file_cache_valid 60s; open_file_cache_min_uses 2; open_file_cache_errors on;

}

max=10000 inactive=30s; open_file_cache_valid 60s; open_file_cache_min_uses 2; open_file_cache_errors on; }

NGiNX, o motor da sua aplicação Web Preparando o servidores para grandes cargas

Habilitar reset para conexões inatvas;

Habilitar sendfle para otmizar envio de arquivos;

Habilitar tcp_tnopush (enviar cabeçalhos em apenas um pacote).

http { reset_timedout_connection on; sendfile on; tcp_nopush on; tcp_nodelay on;

}

cabeçalhos em apenas um pacote). http { reset_timedout_connection on; sendfile on; tcp_nopush on; tcp_nodelay on; }

NGiNX, o motor da sua aplicação Web Preparando o servidores para grandes cargas

Tuning da pilha TCP no kernel do Linux, para suportar 100k conexões atvas ou mais;

Alterando o tempo de reciclagem de conexões TCP em Time Wait;

Editar o arquivo /etc/sysctl.conf, alterando:

# Tuning geral de gigabit:

net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216

# Habilitar mais memória para a pilha TCP

# para suportar muitas (100k+) conexões

# ativas:

net.ipv4.tcp_mem = 50576 64768 98152 net.core.netdev_max_backlog = 2500

# Tuning da reciclagem Time Wait do TCP:

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_fin_timeout=15

= 2500 # Tuning da reciclagem Time Wait do TCP: net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_fin_timeout=15

NGiNX, o motor da sua aplicação Web Servidores de aplicação, escolha a sua linguagem

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web Servidores de aplicação, escolha a sua linguagem

Internet Internet Apache Mod-PHP
Internet Internet
Apache
Mod-PHP
Internet Internet
Internet Internet
NGiNX

NGiNX

NGiNX
NGiNX
Web Servidores de aplicação, escolha a sua linguagem Internet Internet Apache Mod-PHP Internet Internet NGiNX PHP-FPM

PHP-FPM

NGiNX, o motor da sua aplicação Web Servidores de aplicação, escolha a sua linguagem

Protocolo FastCGI:

PHP-FPM;

uWSGI (Python, Ruby, Perl, .Net);

Protocolo proxy HTTP:

Java;

Ruby (mongrel);

BOSH (XMPP over HTTP);

Outros servidores HTTP.

NGiNX, o motor da sua aplicação Web Servidores de aplicação, escolha a sua linguagem

FastCGI, uma implementação similar ao CGI para processos persistentes;

Controle de cabeçalhos e tratamento de erros;

Exemplo de uso (sessão html da confguração do NGiNX):

location ~ [^/]\.php(/|$) { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params;

# Via TCP/IP:

# fastcgi_pass 127.0.0.1:3100;

# Via UNIX Socket:

fastcgi unix:/var/run/php-fpm/php.sock;

}

# Via TCP/IP: # fastcgi_pass 127.0.0.1:3100; # Via UNIX Socket: fastcgi unix:/var/run/php-fpm/php.sock; }

NGiNX, o motor da sua aplicação Web Servidores de aplicação, escolha a sua linguagem

Proxy HTTP, possibilitando a integração com pratcamente quaisquer linguagem web;

Exemplo de uso (sessão html da confguração do NGiNX):

location ~ ^/http-bind { proxy_buffering off; proxy_intercept_errors on; tcp_nodelay on; keepalive_timeout 55; proxy_read_timeout 360;

proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://web1.local:8080;

}

$remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://web1.local:8080; }

NGiNX, o motor da sua aplicação Web Balanceamento de carga entre servidores

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web Balanceamento de carga entre servidores

Internet Internet
Internet Internet

IPVS

de carga entre servidores Internet Internet IPVS Apache Mod-PHP Apache Mod-PHP Internet Internet NGiNX

Apache

Mod-PHP

Apache

Mod-PHP

Internet Internet
Internet Internet

NGiNX

de carga entre servidores Internet Internet IPVS Apache Mod-PHP Apache Mod-PHP Internet Internet NGiNX PHP-FPM PHP-FPM
de carga entre servidores Internet Internet IPVS Apache Mod-PHP Apache Mod-PHP Internet Internet NGiNX PHP-FPM PHP-FPM

PHP-FPM

PHP-FPM

NGiNX, o motor da sua aplicação Web Balanceamento de carga entre servidores

Utlização de clusters com balanceamento de carga por Round Robin, com possibilidade de uso de IP Hash;

Pode ser misturado conexões TCP e UNIX Socket;

Exemplo de uso:

upstream backend { server web1.intra weight=5; server web2.intra:8080; server unix:/tmp/server3;

server backup1.intra:81 backup; server backup2.intra:81 backup;

}

server { location / { proxy_pass http://backend;

}

}

backup1.intra:81 backup; server backup2.intra:81 backup; } server { location / { proxy_pass http://backend; } }

NGiNX, o motor da sua aplicação Web Balanceamento de carga entre servidores

Cluster 1

PHP-FPM

PHP-FPM

M

E

M

C

A

C

H

E

D

Internet Internet
Internet Internet
NGiNX

NGiNX

NGiNX
NGiNX
NGiNX
NGiNX

Cluster 2

PHP-FPM

PHP-FPM

PHP-FPM

PHP-FPM

Cache

M

 

E

M

C

A

C

H

E

D

Cluster 3

PHP-FPM

PHP-FPM

M

E

M

C

A

C

H

E

D

NGiNX, o motor da sua aplicação Web SSL em tudo, sem sobrecarregar sua aplicação

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web SSL em tudo, sem sobrecarregar sua aplicação

Confguração de SSL extremamente simples;

Desonera o servidor de aplicação, deixando o trabalho de criptografa para o proxy web;

Exemplo de uso:

server { listen 10.0.0.1:443; server_name intranet.local; root /var/www/html; index index.html index.htm;

on;

/tmp/intranet.crt;

ssl_certificate_key /tmp/intranet.key;

ssl_certificate

ssl

}

index.html index.htm; on; /tmp/intranet.crt; ssl_certificate_key /tmp/intranet.key; ssl_certificate ssl }

NGiNX, o motor da sua aplicação Web Conteúdo estático

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web Conteúdo estático

Possibilidade de comprimir o conteúdo estátco em disco para entrega em defate ou gzip;

Desonera o servidor de aplicação, que não precisa servir conteúdo estátco;

Exemplo de compressão gzip:

http { gzip on; gzip_static on; gzip_http_version 1.1; gzip_min_length 1400; gzip_vary on; gzip_comp_level 9; gzip_proxied any; gzip_types text/plain text/css …; gzip_buffers 16 8k; gzip_disable "MSIE [1-6].(?!.*SV1)";

}

gzip_proxied any; gzip_types text/plain text/css …; gzip_buffers 16 8k; gzip_disable "MSIE [1-6].(?!.*SV1)"; }

NGiNX, o motor da sua aplicação Web Cache de conteúdo dinâmico

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web Cache de conteúdo dinâmico

Internet Internet
Internet Internet

NGiNX

PHP-FPM Cache
PHP-FPM
Cache

NGiNX, o motor da sua aplicação Web Cache de conteúdo dinâmico

Internet Internet
Internet Internet

NGiNX

PHP-FPM Cache Local PHP-FPM
PHP-FPM
Cache
Local
PHP-FPM

.css

.js

.html

.xml

.jpg

.gif

.mp3

} gzip -9 (.gz)

NGiNX, o motor da sua aplicação Web Perguntas e encerramento

O que é o NGiNX;

A Web 2.0 e o futuro;

O HTML5, e como isso muda a Web;

Protocolo SPDY;

Protocolo HTTP/2;

Preparando servidores para grandes cargas;

Servidores de aplicação, escolha a sua linguagem;

Balanceamento de carga entre servidores;

SSL em tudo, sem sobrecarregar sua aplicação;

Conteúdo estátco;

Cache de conteúdo dinâmico;

Perguntas e encerramento.

NGiNX, o motor da sua aplicação Web Perguntas e encerramento

Perguntas?

NGiNX, o motor da sua aplicação Web Perguntas e encerramento

Obrigado!

Ernani Azevedo

ernaniaz@gmail.com

+55 51 992425885

http://www.intellinews.com.br/