Programa del Curso
Protocolo HTTP/1.x
Formato de solicitud y respuesta
Inspección de conversaciones HTTP con tcpdump y Wireshark
Inspección de encabezados HTTP en un navegador web
Hacer solicitudes con CURL
Encabezados comunes
Solicitud de canalización
Longitud del contenido y codificación fragmentada
Tipos MIME
Nginx Instalación
Instalación de nginx desde paquetes Debian
Variantes de nginx disponibles en Debian y Ubuntu
Instalación de nginx desde el código fuente
Iniciando nginx
Actualización de nginx
Nginx como servidor de archivos estático
Estructura general del fichero de configuración
Configuración de hosts virtuales
Configuración de ubicaciones
Orden de búsqueda de ubicación
Configuración de páginas de error
Emisión de redireccionamientos
Otras formas de reescritura de URL
Servir una imagen GIF vacía
Ubicaciones internas y con nombre
Anulación de tipos MIME
Optimización del rendimiento del lado del cliente
Permitir que los clientes almacenen recursos en caché
El encabezado Vary:
Minimizar el número de solicitudes
Keep-alives
¿Qué sucede si un recurso necesita cambiar?
Cómo tratan los frameworks web los archivos estáticos
Post-procesamiento de contenido
Compresión Gzip
Escalado de imágenes
Access Control
Restringir el acceso a los archivos en función de la dirección IP
Restricciones geográficas
Ocultar directorios VCS y archivos privados
Autenticación básica
Otros tipos de autenticación
Combinación de restricciones
Enlaces seguros
Aplicación de límites
Modelado de tráfico
Agrupar solicitudes con el fin de limitar
Solicitudes de limitación de velocidad
Restricción de conexiones simultáneas
Nginx como proxy inverso
Protocolos ascendentes admitidos
Manejo de certificados SSL ascendentes autofirmados
Pasar parámetros a los backends de FastCGI y uWSGI
Conexiones de proxy websocket
Encabezados X-Accel-*
Modificación de encabezados recibidos y enviados por upstream
Configuraciones de proxy inverso específicas del idioma
PHP
Python
Ruby
Nginx como terminador SSL
Generación de certificados SSL autofirmados
Obtención de certificados de Let's Encrypt
Restricción de los cifrados disponibles
Trabajar con tickets de sesión
Grapado de respuestas OCSP
Verificación de la configuración SSL
Aceptación de certificados del lado cliente
Consideraciones sobre HTTP/2
Equilibrio de carga con Nginx
Definición de grupos ascendentes
Sesiones pegajosas con ip_hash
Características adicionales de Nginx Plus como equilibrador de carga
Alternativas a Nginx y Nginx Plus
Poner otro Nginx detrás de un equilibrador de carga Nginx
Nginx detrás del balanceador de cargas de HAProxy o AWS
Nginx como caché
Decirle a nginx que almacene en caché las páginas
Cómo reacciona nginx a los encabezados estándar relacionados con el almacenamiento en caché
Parámetros ajustables de las cachés
Nginx Skyndiminni vs Skyndiminni á Forritsstigi
Borrar la caché
Implementación de aplicaciones web populares con Nginx
La lista de solicitudes a discutir es determinada por el formador
Registro
Access Archivos de registro y registro de errores
Especificación de un formato de registro personalizado
Seguimiento de solicitudes lentas
Optimización del registro
Rotación de registros
Análisis de registros por programas externos
Monitoreo Nginx
Nginx Página de estado del código auxiliar
Nginx Además de la página de estado en vivo extendida
Lo que los sistemas de monitoreo suelen trazar y alertar Nginx
[Opcional] Alta disponibilidad con Nginx¹
Cómo implementar el mismo contenido estático en varios servidores
Uso compartido de la configuración
Conmutación por error mediante una dirección IP elástica o virtual
Configuración de VRRP con Keepalived
Otras pilas de alta disponibilidad
Nginx Además de integración con Keepalived
Errores comunes y problemas de seguridad relacionados con la configuración Nginx
Problemas comunes de rendimiento
¹ La sección Alta disponibilidad implica una configuración de red que hace que los sistemas de detección de intrusos no estén satisfechos o requiere la configuración de varias máquinas virtuales por participante (lo que no necesita ningún otro tema). Por lo tanto, no se proporciona de forma predeterminada.
Requerimientos
Los participantes deben sentirse cómodos con una línea de comandos Linux y tener un conocimiento práctico de TCP/IP