SlideShare uma empresa Scribd logo
NGiNX, o motor da sua aplicação Web
Ernani Azevedo
• O que é o NGiNX;
• A Web 2.0 e o futuro;
• O HTML5, e como isso muda a Web;
• Protocolo SPDY;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
N G iN X , o m otor da sua aplicação W eb
R oteiro
N G iN X , o m otor da sua aplicação W eb
O que é o N G iN X
• O que é o NGiNX;
• A Web 2.0 e o futuro;
• O HTML5, e como isso muda a Web;
• Protocolo SPDY;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
• Pronuncia-se “Engine X” (motor X);
• Distribuído sob licença BSD;
• Escrito por Igor Sysoev;
• Utilizado 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 (http://kegel.com/c10k.html);
• Estrutura assíncrona de eventos;
• Baixo consumo de recursos (memória e CPU);
• Utilizado em diversos grandes sites, como Facebook, Netflix, Pinterest,
CloudFare, GitHub, WordPress.com, Thumblr, Instagram, Cnet, Time.com,
SoundCloud, Dropbox, MaxCDN, etc...
N G iN X , o m otor da sua aplicação W eb
O que é o N G iN X
N G iN X , o m otor da sua aplicação W eb
O que é o N G iN X
Fonte: Netcraft
http://news.netcraft.com/archives/2014/04/02/april-2014-web-server-survey.html
N G iN X , o m otor da sua aplicação W eb
O que é o N G iN X
Fonte: W3Techs
http://w3techs.com/technologies/cross/web_server/ranking
N G iN X , o m otor da sua aplicação W eb
O que é o N G iN X
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/
N G iN X , o m otor da sua aplicação W eb
A W eb 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;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
• 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.
N G iN X , o m otor da sua aplicação W eb
A W eb 2.0 e o futuro
N G iN X , o m otor da sua aplicação W eb
O H T M L5, e com o isso m uda a W eb
• O que é o NGiNX;
• A Web 2.0 e o futuro;
• O HTML5, e como isso muda a Web;
• Protocolo SPDY;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
• Uso massivo de multi mídia;
• WebSocket possibilitando aplicações P2P;
• Guarda de dados locais (local storage);
• Geo localização em massa.
N G iN X , o m otor da sua aplicação W eb
O H T M L5, e com o isso m uda a W eb
N G iN X , o m otor da sua aplicação W eb
P rotocolo S P D Y
• O que é o NGiNX;
• A Web 2.0 e o futuro;
• O HTML5, e como isso muda a Web;
• Protocolo SPDY;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
• Pronuncia-se Speedy (veloz);
• Criado principalmente pela Google (marca registrada);
• Objetivo de reduzir a latência em páginas web;
• Reduz o número de conexões ativas com o servidor;
• Criptografia de dados utilizando TLS/SSL;
• Compressão dos dados (gzip ou deflate), incluindo cabeçalhos;
• Multiplexação do conteúdo;
• Suportado pelo Google Chrome e o Chromium, e utilizado 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).
N G iN X , o m otor da sua aplicação W eb
P rotocolo S P D Y
N G iN X , o m otor da sua aplicação W eb
P reparando 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;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
N G iN X , o m otor da sua aplicação W eb
P reparando o servidores para grandes cargas
• Habilitar uso de eventos via epoll (Linux kernel 2.5.44 e glibc 2.3.2);
• No FreeBSD, utilizar kqueue;
• Habilitar workers para o número máximo de CPU's (veja o lscpu):
N G iN X , o m otor da sua aplicação W eb
P reparando o servidores para grandes cargas
• Alterar o limite de recursos de arquivos por worker para 100000;
• Alterar o limite de coneões por worker para 2048;
• Habilitar múltiplas conexões;
• Configuração básica para grandes cargas:
worker_processes 16;
worker_rlimit_nofile 100000;
events {
worker_connections 2048;
use epoll;
multi_accept on;
}
N G iN X , o m otor da sua aplicação W eb
P reparando o servidores para grandes cargas
• Habilitar compressão gzip no módulo HTTP;
• Podemos aumentar o tempo limite de keepalive, lembrando que conexões
inativas 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;
}
N G iN X , o m otor da sua aplicação W eb
P reparando o servidores para grandes cargas
• Habilitar cache de metadados no módulo HTTP;
• Esta configuração não possui parâmetro “on”, apesar de existir parâmetro “off”;
• Configuraçã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;
}
N G iN X , o m otor da sua aplicação W eb
P reparando o servidores para grandes cargas
• Habilitar reset para conexões inativas;
• Habilitar sendfile para otimizar envio de arquivos;
• Habilitar tcp_nopush (enviar cabeçalhos em apenas um pacote).
http {
reset_timedout_connection on;
sendfile on;
tcp_nopush on;
}
N G iN X , o m otor da sua aplicação W eb
P reparando o servidores para grandes cargas
• Tuning da pilha TCP no kernel do Linux, para suportar 100k conexões ativas 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
N G iN X , o m otor da sua aplicação W eb
S ervidores de aplicação, escolha a sua linguage
• O que é o NGiNX;
• A Web 2.0 e o futuro;
• O HTML5, e como isso muda a Web;
• Protocolo SPDY;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
N G iN X , o m otor da sua aplicação W eb
S ervidores de aplicação, escolha a sua linguage
InternetInternet
Apache
PHP
InternetInternet
NGiNX
PHP-FPM
N G iN X , o m otor da sua aplicação W eb
S ervidores de aplicação, escolha a sua linguage
• Protocolo FastCGI:
– PHP-FPM;
– uWSGI (Python, Ruby, Perl, .Net);
• Protocolo proxy HTTP:
– Java;
– Ruby (mongrel);
– BOSH (XMPP over HTTP);
– Outros servidores HTTP.
N G iN X , o m otor da sua aplicação W eb
S ervidores de aplicação, escolha a sua linguage
• 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 configuraçã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;
}
N G iN X , o m otor da sua aplicação W eb
S ervidores de aplicação, escolha a sua linguage
• Proxy HTTP, possibilitando a integração com praticamente quaisquer
linguagem web;
• Exemplo de uso (sessão html da configuraçã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;
}
N G iN X , o m otor da sua aplicação W eb
B alanceam ento 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;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
N G iN X , o m otor da sua aplicação W eb
B alanceam ento de carga entre servidores
InternetInternet
IPVS
InternetInternet
NGiNX
PHP-FPM PHP-FPM
Apache
PHP
Apache
PHP
N G iN X , o m otor da sua aplicação W eb
B alanceam ento de carga entre servidores
• Utilizaçã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;
}
}
N G iN X , o m otor da sua aplicação W eb
B alanceam ento de carga entre servidores
InternetInternet
NGiNX
PHP-FPM
Cache
Cluster 1
PHP-FPM
PHP-FPM
Cluster 2
PHP-FPM
PHP-FPM
PHP-FPM
PHP-FPM
Cluster 3
PHP-FPM
M
E
M
C
A
C
H
E
D
M
E
M
C
A
C
H
E
D
M
E
M
C
A
C
H
E
D
N G iN X , o m otor da sua aplicação W eb
S S L 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;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
N G iN X , o m otor da sua aplicação W eb
S S L em tudo, sem sobrecarregar sua aplicação
• Configuração de SSL extremamente simples;
• Desonera o servidor de aplicação, deixando o trabalho de criptografia 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;
ssl on;
ssl_certificate /tmp/intranet.crt;
ssl_certificate_key /tmp/intranet.key;
}
N G iN X , o m otor da sua aplicação W eb
C onteúdo estático
• O que é o NGiNX;
• A Web 2.0 e o futuro;
• O HTML5, e como isso muda a Web;
• Protocolo SPDY;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
N G iN X , o m otor da sua aplicação W eb
C onteúdo estático
• Possibilidade de comprimir o conteúdo estático em disco para entrega em
deflate ou gzip;
• Desonera o servidor de aplicação, que não precisa servir conteúdo estático;
• 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)";
}
N G iN X , o m otor da sua aplicação W eb
C ache de conteúdo dinâm ico
• O que é o NGiNX;
• A Web 2.0 e o futuro;
• O HTML5, e como isso muda a Web;
• Protocolo SPDY;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
N G iN X , o m otor da sua aplicação W eb
C ache de conteúdo dinâm ico
InternetInternet
NGiNX
PHP-FPM Cache
N G iN X , o m otor da sua aplicação W eb
C ache de conteúdo dinâm ico
InternetInternet
NGiNX
PHP-FPM Cache
PHP-FPM
Local
.css
.js
.html
.xml
.jpg
.gif
.mp3
...
}gzip -9 (.gz)
N G iN X , o m otor da sua aplicação W eb
P erguntas e encerram ento
• O que é o NGiNX;
• A Web 2.0 e o futuro;
• O HTML5, e como isso muda a Web;
• Protocolo SPDY;
• 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ático;
• Cache de conteúdo dinâmico;
• Perguntas e encerramento.
N G iN X , o m otor da sua aplicação W eb
P erguntas e encerram ento
Perguntas?
N G iN X , o m otor da sua aplicação W eb
P erguntas e encerram ento
Obrigado!
Ernani Azevedo
ernaniaz@gmail.com
+55 51 92425885
http://www.intellinews.com.br/

Mais conteúdo relacionado

NGiNX, o motor da sua aplicação web

  • 1. NGiNX, o motor da sua aplicação Web Ernani Azevedo
  • 2. • O que é o NGiNX; • A Web 2.0 e o futuro; • O HTML5, e como isso muda a Web; • Protocolo SPDY; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento. N G iN X , o m otor da sua aplicação W eb R oteiro
  • 3. N G iN X , o m otor da sua aplicação W eb O que é o N G iN X • O que é o NGiNX; • A Web 2.0 e o futuro; • O HTML5, e como isso muda a Web; • Protocolo SPDY; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 4. • Pronuncia-se “Engine X” (motor X); • Distribuído sob licença BSD; • Escrito por Igor Sysoev; • Utilizado 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 (http://kegel.com/c10k.html); • Estrutura assíncrona de eventos; • Baixo consumo de recursos (memória e CPU); • Utilizado em diversos grandes sites, como Facebook, Netflix, Pinterest, CloudFare, GitHub, WordPress.com, Thumblr, Instagram, Cnet, Time.com, SoundCloud, Dropbox, MaxCDN, etc... N G iN X , o m otor da sua aplicação W eb O que é o N G iN X
  • 5. N G iN X , o m otor da sua aplicação W eb O que é o N G iN X Fonte: Netcraft http://news.netcraft.com/archives/2014/04/02/april-2014-web-server-survey.html
  • 6. N G iN X , o m otor da sua aplicação W eb O que é o N G iN X Fonte: W3Techs http://w3techs.com/technologies/cross/web_server/ranking
  • 7. N G iN X , o m otor da sua aplicação W eb O que é o N G iN X 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/
  • 8. N G iN X , o m otor da sua aplicação W eb A W eb 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; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 9. • 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. N G iN X , o m otor da sua aplicação W eb A W eb 2.0 e o futuro
  • 10. N G iN X , o m otor da sua aplicação W eb O H T M L5, e com o isso m uda a W eb • O que é o NGiNX; • A Web 2.0 e o futuro; • O HTML5, e como isso muda a Web; • Protocolo SPDY; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 11. • Uso massivo de multi mídia; • WebSocket possibilitando aplicações P2P; • Guarda de dados locais (local storage); • Geo localização em massa. N G iN X , o m otor da sua aplicação W eb O H T M L5, e com o isso m uda a W eb
  • 12. N G iN X , o m otor da sua aplicação W eb P rotocolo S P D Y • O que é o NGiNX; • A Web 2.0 e o futuro; • O HTML5, e como isso muda a Web; • Protocolo SPDY; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 13. • Pronuncia-se Speedy (veloz); • Criado principalmente pela Google (marca registrada); • Objetivo de reduzir a latência em páginas web; • Reduz o número de conexões ativas com o servidor; • Criptografia de dados utilizando TLS/SSL; • Compressão dos dados (gzip ou deflate), incluindo cabeçalhos; • Multiplexação do conteúdo; • Suportado pelo Google Chrome e o Chromium, e utilizado 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). N G iN X , o m otor da sua aplicação W eb P rotocolo S P D Y
  • 14. N G iN X , o m otor da sua aplicação W eb P reparando 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; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 15. N G iN X , o m otor da sua aplicação W eb P reparando o servidores para grandes cargas • Habilitar uso de eventos via epoll (Linux kernel 2.5.44 e glibc 2.3.2); • No FreeBSD, utilizar kqueue; • Habilitar workers para o número máximo de CPU's (veja o lscpu):
  • 16. N G iN X , o m otor da sua aplicação W eb P reparando o servidores para grandes cargas • Alterar o limite de recursos de arquivos por worker para 100000; • Alterar o limite de coneões por worker para 2048; • Habilitar múltiplas conexões; • Configuração básica para grandes cargas: worker_processes 16; worker_rlimit_nofile 100000; events { worker_connections 2048; use epoll; multi_accept on; }
  • 17. N G iN X , o m otor da sua aplicação W eb P reparando o servidores para grandes cargas • Habilitar compressão gzip no módulo HTTP; • Podemos aumentar o tempo limite de keepalive, lembrando que conexões inativas 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; }
  • 18. N G iN X , o m otor da sua aplicação W eb P reparando o servidores para grandes cargas • Habilitar cache de metadados no módulo HTTP; • Esta configuração não possui parâmetro “on”, apesar de existir parâmetro “off”; • Configuraçã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; }
  • 19. N G iN X , o m otor da sua aplicação W eb P reparando o servidores para grandes cargas • Habilitar reset para conexões inativas; • Habilitar sendfile para otimizar envio de arquivos; • Habilitar tcp_nopush (enviar cabeçalhos em apenas um pacote). http { reset_timedout_connection on; sendfile on; tcp_nopush on; }
  • 20. N G iN X , o m otor da sua aplicação W eb P reparando o servidores para grandes cargas • Tuning da pilha TCP no kernel do Linux, para suportar 100k conexões ativas 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
  • 21. N G iN X , o m otor da sua aplicação W eb S ervidores de aplicação, escolha a sua linguage • O que é o NGiNX; • A Web 2.0 e o futuro; • O HTML5, e como isso muda a Web; • Protocolo SPDY; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 22. N G iN X , o m otor da sua aplicação W eb S ervidores de aplicação, escolha a sua linguage InternetInternet Apache PHP InternetInternet NGiNX PHP-FPM
  • 23. N G iN X , o m otor da sua aplicação W eb S ervidores de aplicação, escolha a sua linguage • Protocolo FastCGI: – PHP-FPM; – uWSGI (Python, Ruby, Perl, .Net); • Protocolo proxy HTTP: – Java; – Ruby (mongrel); – BOSH (XMPP over HTTP); – Outros servidores HTTP.
  • 24. N G iN X , o m otor da sua aplicação W eb S ervidores de aplicação, escolha a sua linguage • 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 configuraçã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; }
  • 25. N G iN X , o m otor da sua aplicação W eb S ervidores de aplicação, escolha a sua linguage • Proxy HTTP, possibilitando a integração com praticamente quaisquer linguagem web; • Exemplo de uso (sessão html da configuraçã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; }
  • 26. N G iN X , o m otor da sua aplicação W eb B alanceam ento 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; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 27. N G iN X , o m otor da sua aplicação W eb B alanceam ento de carga entre servidores InternetInternet IPVS InternetInternet NGiNX PHP-FPM PHP-FPM Apache PHP Apache PHP
  • 28. N G iN X , o m otor da sua aplicação W eb B alanceam ento de carga entre servidores • Utilizaçã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; } }
  • 29. N G iN X , o m otor da sua aplicação W eb B alanceam ento de carga entre servidores InternetInternet NGiNX PHP-FPM Cache Cluster 1 PHP-FPM PHP-FPM Cluster 2 PHP-FPM PHP-FPM PHP-FPM PHP-FPM Cluster 3 PHP-FPM M E M C A C H E D M E M C A C H E D M E M C A C H E D
  • 30. N G iN X , o m otor da sua aplicação W eb S S L 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; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 31. N G iN X , o m otor da sua aplicação W eb S S L em tudo, sem sobrecarregar sua aplicação • Configuração de SSL extremamente simples; • Desonera o servidor de aplicação, deixando o trabalho de criptografia 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; ssl on; ssl_certificate /tmp/intranet.crt; ssl_certificate_key /tmp/intranet.key; }
  • 32. N G iN X , o m otor da sua aplicação W eb C onteúdo estático • O que é o NGiNX; • A Web 2.0 e o futuro; • O HTML5, e como isso muda a Web; • Protocolo SPDY; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 33. N G iN X , o m otor da sua aplicação W eb C onteúdo estático • Possibilidade de comprimir o conteúdo estático em disco para entrega em deflate ou gzip; • Desonera o servidor de aplicação, que não precisa servir conteúdo estático; • 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)"; }
  • 34. N G iN X , o m otor da sua aplicação W eb C ache de conteúdo dinâm ico • O que é o NGiNX; • A Web 2.0 e o futuro; • O HTML5, e como isso muda a Web; • Protocolo SPDY; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 35. N G iN X , o m otor da sua aplicação W eb C ache de conteúdo dinâm ico InternetInternet NGiNX PHP-FPM Cache
  • 36. N G iN X , o m otor da sua aplicação W eb C ache de conteúdo dinâm ico InternetInternet NGiNX PHP-FPM Cache PHP-FPM Local .css .js .html .xml .jpg .gif .mp3 ... }gzip -9 (.gz)
  • 37. N G iN X , o m otor da sua aplicação W eb P erguntas e encerram ento • O que é o NGiNX; • A Web 2.0 e o futuro; • O HTML5, e como isso muda a Web; • Protocolo SPDY; • 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ático; • Cache de conteúdo dinâmico; • Perguntas e encerramento.
  • 38. N G iN X , o m otor da sua aplicação W eb P erguntas e encerram ento Perguntas?
  • 39. N G iN X , o m otor da sua aplicação W eb P erguntas e encerram ento Obrigado! Ernani Azevedo ernaniaz@gmail.com +55 51 92425885 http://www.intellinews.com.br/