NGINX en action
Derek Dejonghe
First Interactive, O'Reilly®
Avant-proposi
Préfaceiii
Conventions typographiquesiv
Mises à jour et page du livreiv
Remerciementsv
Terminologie françaisev
1. Fondamentaux1
1.0 : Introduction1
1.1 : Installer sous Debian/Ubuntu1
1.2 : Installer sous RedHat/CentOS2
1.3 : Installer la variante NGINX Plus3
1.4 : Vérifier votre installation3
1.5 : Fichiers, répertoires et commandes essentiels4
1.6 : Servir du contenu statique6
1.7 : Recharger sans perte8
2. Répartition de charge à hautes performances9
2.0 : Introduction9
2.1 : Répartition de charge HTTP10
2.2 : Répartition de charge TCP11
2.3 : Répartition de charge UDP13
2.4 : Choisir une méthode de répartition de charge14
2.5 : Copie rémanente sticky cookie (NGINX Plus)17
2.6 : Réutilisation de cookie sticky learn (NGINX Plus)18
2.7 : Routage rémanent sticky route (NGINX Plus)19
2.8 : Purge d'une connexion (NGINX Plus)20
2.9 : Bilan de santé passif21
2.10 : Bilan de santé actif (NGINX Plus)22
2.11 : Démarrage graduel avec NGINX Plus24
3. Gestion du trafic25
3.0 : Introduction25
3.1 : Tests A/B25
3.2 : Utiliser le module et la base GeoIP27
3.3 : Restreindre l'accès à certains pays29
3.4 : Déterminer l'adresse réelle du client30
3.5 : Limiter le nombre de connexions31
3.6 : Limiter la densité32
3.7 : Limiter la bande passante34
4. Mise en cache performante et adaptative37
4.0 : Introduction37
4.1 : Définir une zone cache37
4.2 : Verrouiller le cache38
4.3 : Utiliser les clés de hachage de cache39
4.4 : Contourner le cache (bypass)40
4.5 : Activer un cache client41
4.6 : Purger un cache (NGINX Plus)42
4.7 : Segmenter la mise en cache (slice)43
5. Programmes et automatisation45
5.0 : Introduction45
5.1 : L'interface API de NGINX Plus46
5.2 : Utiliser un dépôt clés-valeurs (NGINX Plus)49
5.3 : Enrichir NGINX avec un langage de programmation52
5.4 : Automatiser l'installation avec Puppet54
5.5 : Automatiser l'installation avec Chef56
5.6 : Automatiser l'installation avec Ansible57
5.7 : Automatiser l'installation avec SaltStack59
5.8 : Automatiser les configurations avec un modèle Consul60
6. Authentification63
6.0 : Introduction63
6.1 : Authentification HTTP basique63
6.2 : Sous-requêtes d'authentification65
6.3 : Valider un jeton JWT (NGINX Plus)66
6.4 : Créer des clés Web JSON67
6.5 : Valider des jetons JWT (NGINX Plus)68
6.6 : Obtenir et cacher des jeux de clés JWK (NGINX Plus)69
6.7 : Authentifier des utilisateurs avec OpenID Connect SSO (NGINX Plus)71
7. Contrôles de sécurité73
7.0 : Introduction73
7.1 : Contrôler les accès selon l'adresse IP73
7.2 : Autoriser le partage de ressources inter-domaines (CORS)74
7.3 : Crypter du côté client76
7.4 : Cryptage côté client avancé77
7.5 : Cryptage des flux amont (stream)79
7.6 : Sécuriser un bloc location80
7.7 : Générer un lien sécurisé avec un secret81
7.8 : Sécuriser une location avec une date d'expiration82
7.9 : Générer un lien expirant83
7.10 : Forcer une redirection HTTPS84
7.11 : Rediriger en HTTPS lorsque SSL/TLS s'arrête avant NGINX85
7.12 : Forcer le mode HTTPS dans le navigateur client86
7.13 : Accepter plusieurs méthodes de sécurisation87
7.14 : Parer aux attaques DDoS avec la couche d'application dynamique (NGINX Plus)88
7.15 : Installer et configurer le module App Protect (NGINX Plus)89
8. HTTP/293
8.0 : Introduction93
8.1 : Configuration de base93
8.2 : gRPC94
8.3 : Émissions serveur push HTTP/296
9. Optimisation des flux vidéo99
9.0 : Introduction99
9.1 : Servir des contenus MP4 et FLV99
9.2 : Diffuser un flux HLS (NGINX Plus)100
9.3 : Diffuser un flux HDS (NGINX Plus)101
9.4 : Limiter la bande passante (NGINX Plus)102
10. Déploiement cloud105
10.0 : Introduction105
10.1 : Autoprovisionnement dans AWS105
10.2 : Routage vers des noeuds NGINX sans AWS ELB107
10.3 : Le sandwich NLB109
10.4 : Déployer depuis AWS Market Place111
10.5 : Gréer une image VM NGINX sur Azure112
10.6 : Répartition de charge Scale Set NGINX dans Azure114
10.7 : Déployer NGINX Plus par la place de marché Azure115
10.8 : Déployer vers Google Compute Engine116
10.9 : Créer une image Google Compute116
10.10 : Créer un proxy pour Google App Engine117
11. Conteneurs et microservices119
11.0 : Introduction119
11.1 : Utiliser NGINX comme passerelle API120
11.2 : Utiliser des enregistrements de service DNS (NGINX Plus)125
11.3 : Utiliser l'image NGINX officielle126
11.4 : Créer un fichier Docker NGINX127
11.5 : Construire une image Docker NGINX Plus128
11.6 : Utiliser des variables d'environnement dans NGINX130
11.7 : Contrôleur d'entrée Kubernetes132
11.8 : Le module Prometheus Exporter134
12. Déploiement à haute disponibilité137
12.0 : Introduction137
12.1 : NGINX Plus HA Mode137
12.2 : Répartir des répartiteurs avec DNS138
12.3 : Répartir la charge dans EC2139
12.4 : Synchronisation de configurations (NGINX Plus)139
12.5 : Partager l'état avec NGINX Plus et Zone Sync142
13. Supervision avancée145
13.0 : Introduction145
13.1 : Activer le module open source Stub Status145
13.2 : Activer le tableau de bord NGINX Plus146
13.3 : Collecter des métriques avec l'API de NGINX Plus149
14. Débogage, journaux d'accès, d'erreurs et traçage de requêtes153
14.0 : Introduction153
14.1 : Configurer les journaux d'accès153
14.2 : Configurer les journaux d'erreurs155
14.3 : Transférer les journaux vers SysLog156
14.4 : Tracer des requêtes157
14.5 : Tracer avec OpenTracing pour NGINX158
15. Optimiser les performances163
15.0 : Introduction163
15.1 : Automatiser les tests avec un banc de charge163
15.2 : Garder ouvertes les connexions clients164
15.3 : Garder ouvertes les connexions amont165
15.4 : Tamponner les réponses -166
15.5 : Tamponner les journaux d'accès167
15.6 : Optimiser le système d'exploitation168
16. Introduction à NGINX Controller171
16.0 : Introduction171
16.1 : Vue d'ensemble de la mise en place171
16.2 : Connecter NGINX Plus à NGINX Controller174
16.3 : Exploiter NGINX Controller avec l'API175
16.4 : Activer WAF avec Controller App Security176
17. Astuces opérationnelles179
17.0 : Introduction179
17.1 : Utiliser include pour clarifier les configurations179
17.2 : Déboguer une configuration180
Conclusion183
Index185