Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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
Fonte: W3Techs
http://w3techs.com/technologies/cross/web_server/ranking
NGiNX, o motor da sua aplicação Web
O que é o NGiNX
Fonte: W3Techs
http://w3techs.com/technologies/cross/web_server/ranking
NGiNX, o motor da sua aplicação Web
O que é o NGiNX
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
• 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
• 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
Limitações
• 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
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 {
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;
}
}
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):
NGiNX, o motor da sua aplicação Web
Preparando o servidores para grandes cargas
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
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;
}
NGiNX, o motor da sua aplicação Web
Preparando o servidores para grandes cargas
http {
open_file_cache 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
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:
• 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 Internet
Internet
Apache
NGiNX
Mod-PHP
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);
– 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
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;
location ~ ^/http-bind {
proxy_buffering off;
proxy_intercept_errors on;
tcp_nodelay on;
keepalive_timeout 55;
proxy_read_timeout 360;
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 NGiNX
Apache Apache
PHP-FPM PHP-FPM
Mod-PHP Mod-PHP
NGiNX, o motor da sua aplicação Web
Balanceamento de carga entre servidores
upstream backend {
server web1.intra weight=5;
server web2.intra:8080;
server unix:/tmp/server3;
server {
location / {
proxy_pass http://backend;
}
}
NGiNX, o motor da sua aplicação Web
Balanceamento de carga entre servidores
Internet
Internet
NGiNX Cache
• 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
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;
}
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
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)";
}
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
NGiNX
PHP-FPM Cache
NGiNX, o motor da sua aplicação Web
Cache de conteúdo dinâmico
Internet
Internet
NGiNX
}
.css
PHP-FPM Cache Local .js
gzip -9 (.gz)
.html
.xml
.jpg
PHP-FPM .gif
.mp3
...
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/