Optimizar NGINX con HTTP2 para mejorar el rendimiento.
HTTP2 es la actualización del protocolo HTTP ya un tanto obsoleto, fue publicado por primera vez en 1997.
HTTP2 nos aporta mejoras significativas en eficacia, velocidad y seguridad, ademas es compatible con la mayoría de los navegadores web modernos. Puedes ver el listado de navegadores compatibles «aquí«.
Las principales características, son:
- HTTP2 es binario, en vez de textual.
- Se multiplexa por completo, enviando múltiples solicitudes en paralelo a través de una única conexión TCP.
- Utiliza la compresión de encabezado HPACK para minimizar la carga.
- Permite al servidor enviar respuestas proactivamente a las cachés sin tener que esperar una nueva petición para cada recurso.
- Utiliza la nueva extensión ALPN que permite a las conexiones cifradas ser más rápidas.
- Reduce el tiempo de envío y recepción (RTT), por tanto el sitio web se cargua más rápido.
- Ya no es necesario ni el Domain Sharding, ni la concatenación de activos.
Pero no todo son beneficios en HTTP2 y es que la conexión inicial entre el servidor y el usuario, puede demorarse un poco más que con HTTP, sobre todo al usar certificados SSL.
No te preocupes…. esta pequeña demora tiene solución, vemos como.
sudo nano /etc/nginx/nginx.conf
Una vez abierto, nos movemos a la sección «http {«, suele estar al final del archivo.
Para optimizar NGINX correctamente, agregaremos el siguiente código antes del cierre de paréntesis:
ssl_session_cache shared:SSL:5m; ssl_session_timeout 1h; add_header Strict-Transport-Security "max-age=15768000" always;
ejemplo…
http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #tcp_nodelay on; #gzip on; #gzip_disable "MSIE [1-6]\.(?!.*SV1)"; server_tokens off; include /etc/nginx/conf.d/*.conf; ssl_session_cache shared:SSL:5m; ssl_session_timeout 1h; add_header Strict-Transport-Security "max-age=15768000" always; } # override global parameters e.g. worker_rlimit_nofile include /etc/nginx/*global_params;
Guarda el archivo y cierra el editor.
Reiniciamos NGINX, si no recuerdas como… revisa este articulo anterior.
Una vez concluido todo el proceso podemos dirigirnos a la pagina de herramientas KeyCDN y comprobar que nuestra pagina web tiene soporte para:
Pagina de comprobación: «https://tools.keycdn.com/http2-test»
En la imagen de ejemplo, puedes ver que comprobamos este mismo sitio web, sololinux.es.
Como refleja la imagen, sololinux.es soporta HTTP/2 y ALPN.