Plan du cours
Protocole HTTP/1.x Format de requête et de réponse Inspecter les conversations HTTP avec tcpdump et Wireshark Inspecter les en-têtes HTTP dans un navigateur Web Faire des requêtes avec CURL En-têtes courants Pipelining des requêtes Longueur du contenu et encodage fragmenté Types MIME
Nginx installation Installation de nginx à partir des packages Debian
Variantes de nginx disponibles dans Debian et UbuntuInstaller nginx à partir des sourcesDémarrer nginxMise à niveau de nginxNginx comme serveur de fichiers statique Structure générale du fichier de configurationConfiguration d'hôtes virtuels
Configuration des emplacementsOrdre de recherche d'emplacementConfiguration des pages d'erreurÉmettre des redirectionsAutres formes de réécriture d'URLServir une image GIF videEmplacements internes et nommésRemplacement des types MIMEOptimisation des performances côté client Autoriser les clients à mettre en cache les ressourcesLe Vary : en-têteMinimiser le nombre de demandes
Gardez-en vieQue se passe-t-il si une ressource doit changerComment les frameworks Web gèrent les fichiers statiquesCompression Gzip après traitement du contenuMise à l'échelle de l'imageAccess contrôle Restreindre l'accès aux fichiers en fonction de l'adresse IPRestrictions géographiques
Masquage des répertoires VCS et des fichiers privésAuthentification de baseAutres types d'authentification
Combinaison de restrictionsLiens sécurisésAppliquer des limites Adaptation du traficRegrouper les demandes dans un but de limitationDemandes de limitation de débitRestreindre les connexions simultanéesNginx comme proxy inverse Protocoles en amont pris en chargeGérer les certificats SSL en amont auto-signés
Passer des paramètres aux backends FastCGI et uWSGIProxy des connexions WebsocketEn-têtes X-Accel-*Modification des en-têtes reçus et envoyés par l'amontConfigurations de proxy inverse spécifiques à la langue PHP
PythonRubyNginx comme terminateur SSL Génération de certificats SSL auto-signésObtention de certificats de Let's EncryptRestreindre les chiffrements disponiblesTravailler avec des tickets de sessionAgrafage des réponses OCSP
Vérification de la configuration SSLAccepter les certificats côté clientConsidérations HTTP/2Équilibrage de charge avec Nginx Définition des groupes en amont
Sessions collantes utilisant ip_hashFonctionnalités supplémentaires de Nginx Plus en tant qu'équilibreur de chargeAlternatives à Nginx et Nginx PlusMettre un autre Nginx derrière un équilibreur de charge NginxNginx derrière HAProxy ou l'équilibreur de charge AWSNginx comme cache Dire à nginx de mettre les pages en cacheComment nginx réagit aux en-têtes standard liés à la mise en cacheParamètres réglables des cachesNginx cache vs cache au niveau de l'application
Vider le cacheDéployer des applications Web populaires avec Nginx La liste des applications à discuter est déterminée par le formateurJournalisation des fichiers journaux et journaux d'erreurs AccessSpécification du format de journal personnaliséSuivi des demandes lentesOptimisation de la journalisationRotation des journaux
Analyse des journaux par des programmes externesSurveillance de la page d'état du stub Nginx NginxNginx Plus une page d'état en direct étendueSur quoi les systèmes de surveillance tracent et alertent habituellement Nginx[facultatif] Haute disponibilité avec Nginx¹ Comment déployer le même contenu statique sur plusieurs serveursPartage de configuration
Basculement à l’aide d’une adresse IP élastique/virtuelleConfiguration de VRRP avec Keepalived
Autres piles à haute disponibilitéNginx Plus intégration avec KeepalivedErreurs courantes et problèmes de sécurité liés à la configuration de NginxProblèmes de performances courants¹ La section Haute disponibilité implique une configuration réseau qui rend les systèmes de détection d'intrusion mécontents, ou nécessite la configuration de plusieurs machines virtuelles par participant (ce dont aucun autre sujet n'a besoin). Il n’est donc pas fourni par défaut.
Pré requis
Les participants doivent être à l'aise avec une ligne de commande Linux et avoir une connaissance pratique de TCP/IP.