• Nenhum resultado encontrado

NGiNX, o motor da sua aplicação Web. Ernani Azevedo

N/A
N/A
Protected

Academic year: 2021

Share "NGiNX, o motor da sua aplicação Web. Ernani Azevedo"

Copied!
39
0
0

Texto

(1)

NGiNX, o motor da sua aplicação Web

(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 o to r d a su a a p lica çã o W e b

R o te iro

(3)

N G iN X , o m o to r d a su a a p lica çã o W e b

O q u e é 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 o to r d a su a a p lica çã o W e b

O q u e é o N G iN X

(5)

N G iN X , o m o to r d a su a a p lica çã o W e b

O q u e é o N G iN X

Fonte: Netcraft

(6)

N G iN X , o m o to r d a su a a p lica çã o W e b

O q u e é o N G iN X

Fonte: W3Techs

(7)

N G iN X , o m o to r d a su a a p lica çã o W e b

O q u e é o N G iN X

Fonte: The Atlantic

(8)

N G iN X , o m o to r d a su a a p lica çã o W e b

A W e b 2 .0 e o fu tu ro

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 o to r d a su a a p lica çã o W e b

A W e b 2 .0 e o fu tu ro

(10)

N G iN X , o m o to r d a su a a p lica çã o W e b

O H T M L 5 , e co m o isso m u d a a W e b

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 o to r d a su a a p lica çã o W e b

O H T M L 5 , e co m o isso m u d a a W e b

(12)

N G iN X , o m o to r d a su a a p lica çã o W e b

P ro to co lo 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 o to r d a su a a p lica çã o W e b

P ro to co lo S P D Y

(14)

N G iN X , o m o to r d a su a a p lica çã o W e b

P re p a ra n d o o se rvid o re s p a ra g ra n d e s ca rg a s

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 o to r d a su a a p lica çã o W e b

P re p a ra n d o o se rvid o re s p a ra g ra n d e s ca rg a s

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

No FreeBSD, utilizar kqueue;

(16)

N G iN X , o m o to r d a su a a p lica çã o W e b

P re p a ra n d o o se rvid o re s p a ra g ra n d e s ca rg a s

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 o to r d a su a a p lica çã o W e b

P re p a ra n d o o se rvid o re s p a ra g ra n d e s ca rg a s

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 o to r d a su a a p lica çã o W e b

P re p a ra n d o o se rvid o re s p a ra g ra n d e s ca rg a s

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 o to r d a su a a p lica çã o W e b

P re p a ra n d o o se rvid o re s p a ra g ra n d e s ca rg a s

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 o to r d a su a a p lica çã o W e b

P re p a ra n d o o se rvid o re s p a ra g ra n d e s ca rg a s

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

(21)

N G iN X , o m o to r d a su a a p lica çã o W e b

S e rvid o re s d e a p lica çã o , e sco lh a a su a lin g u a g e m

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 o to r d a su a a p lica çã o W e b

S e rvid o re s d e a p lica çã o , e sco lh a a su a lin g u a g e m

Internet

Internet

Apache

PHP

Internet

Internet

NGiNX

PHP-FPM

(23)

N G iN X , o m o to r d a su a a p lica çã o W e b

S e rvid o re s d e a p lica çã o , e sco lh a a su a lin g u a g e m

Protocolo FastCGI:

PHP-FPM;

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

Protocolo proxy HTTP:

Java;

Ruby (mongrel);

BOSH (XMPP over HTTP);

(24)

N G iN X , o m o to r d a su a a p lica çã o W e b

S e rvid o re s d e a p lica çã o , e sco lh a a su a lin g u a g e m

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 o to r d a su a a p lica çã o W e b

S e rvid o re s d e a p lica çã o , e sco lh a a su a lin g u a g e m

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 o to r d a su a a p lica çã o W e b

B a la n ce a m e n to d e ca rg a e n tre se rvid o re s

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 o to r d a su a a p lica çã o W e b

B a la n ce a m e n to d e ca rg a e n tre se rvid o re s

Internet

Internet

IPVS

Internet

Internet

NGiNX

PHP-FPM

PHP-FPM

Apache

PHP

Apache

PHP

(28)

N G iN X , o m o to r d a su a a p lica çã o W e b

B a la n ce a m e n to d e ca rg a e n tre se rvid o re s

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 o to r d a su a a p lica çã o W e b

B a la n ce a m e n to d e ca rg a e n tre se rvid o re s

Internet

Internet

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 o to r d a su a a p lica çã o W e b

S S L e m tu d o , se m so b re ca rre g a r su a a p lica çã 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;

(31)

N G iN X , o m o to r d a su a a p lica çã o W e b

S S L e m tu d o , se m so b re ca rre g a r su a a p lica çã 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 o to r d a su a a p lica çã o W e b

C o n te ú d o e stá 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;

(33)

N G iN X , o m o to r d a su a a p lica çã o W e b

C o n te ú d o e stá 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 o to r d a su a a p lica çã o W e b

C a ch e d e co n te ú d o d in â 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 o to r d a su a a p lica çã o W e b

C a ch e d e co n te ú d o d in â m ico

Internet

Internet

NGiNX

PHP-FPM

Cache

(36)

N G iN X , o m o to r d a su a a p lica çã o W e b

C a ch e d e co n te ú d o d in â m ico

Internet

Internet

NGiNX

PHP-FPM

Cache

PHP-FPM

Local

.css

.js

.html

.xml

.jpg

.gif

.mp3

...

}

gzip -9 (.gz)

(37)

N G iN X , o m o to r d a su a a p lica çã o W e b

P e rg u n ta s e e n ce rra m e n to

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;

(38)

N G iN X , o m o to r d a su a a p lica çã o W e b

P e rg u n ta s e e n ce rra m e n to

(39)

N G iN X , o m o to r d a su a a p lica çã o W e b

P e rg u n ta s e e n ce rra m e n to

Obrigado!

Ernani Azevedo

ernaniaz@gmail.com

+55 51 92425885

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

Referências

Documentos relacionados

Partimos do argumento de que é necessário repensar a forma que está sendo realizada a formação dos psicólogos, se ela está sendo efetiva e se não, quais aspectos deveriam ser

• O cérebro contém metade da quantidade total de fosfatidilserina do organismo; • Há decréscimo de fosfatidilserina com o envelhecimento (Cenacchi et al., 1993).. Níveis Teciduais

a) vou instalando os pacotes: do banco, nginx / apache, etc
 b) vou instalando mas na versão do site: nginx 1.2.1, php 5.6.1
 c) vou levantar um virtualbox com todos os

O SECRETÁRIO CHEFE DO GABINETE DO GOVERNADOR DO ESTADO DO CEARÁ, no uso de suas atribuições legais, RESOLVE AUTO- RIZAR a concessão de passagens aéreas, seguro de viagem, pagamento de

• Realizar o deploy de um aplicação nginx através de arquivos yaml, criando um index.html da imagem do container utilizando o objeto ConfigMap.

● O Nginx tem um papel muito importante para garantir a segurança de aplicações Web, não somente pelas suas utilidades como proxy reverso e caching como foi visto

Esta é a Sua fidelidade, que nos permite olhar tudo, que nos permite deixar entrar a Sua própria presença na vida, a única que pode reduzir cada vez mais a distância entre a

O parcelamento do valor da arrematação será formalizado mediante processo eletrônico, no sistema E-processo, devendo constar no requerimento, cujo modelo consta do Anexo