Top 50 des questions et réponses des entretiens avec Nginx (2026)

Se préparer à un entretien d'embauche pour un poste Nginx exige de l'anticipation, de la clarté et une bonne compréhension de la manière dont les recruteurs évaluent aujourd'hui les compétences opérationnelles réelles. Les questions posées lors d'un entretien Nginx permettent d'évaluer la profondeur des connaissances, la capacité de décision, l'aptitude à résoudre les problèmes et l'aptitude à la mise en production.
Ces rôles offrent des perspectives dans les domaines de l'infrastructure cloud, de l'ingénierie de la performance et de la sécurité, où la mise en œuvre de configurations pratiques est essentielle. Les employeurs valorisent l'expérience technique, l'expertise métier et les capacités d'analyse acquises sur le terrain, permettant ainsi aux jeunes diplômés, aux ingénieurs intermédiaires et aux professionnels expérimentés d'appliquer leurs compétences, des plus basiques aux plus avancées, au sein d'équipes encadrées par des responsables et des chefs d'équipe. Lire la suite...
👉 Téléchargement PDF gratuit : Questions et réponses d’entretien sur Nginx
Questions et réponses d'entretien Nginx les plus fréquentes
1) Expliquez ce qu'est NGINX et pourquoi il est largement utilisé dans l'infrastructure web.
NGINX est un serveur web open source haute performance qui fait également office de proxy inverse, d'équilibreur de charge et de cache HTTP. Il prend en charge les protocoles HTTP, HTTPS, SMTP, POP3 et IMAP. Son architecture repose sur un event-driven, asynchronous model Cela lui permet de gérer des dizaines de milliers de connexions simultanées avec une faible consommation de mémoire et de processeur. Cette évolutivité rend NGINX particulièrement adapté aux applications web à fort trafic, aux microservices et aux architectures distribuées. Par exemple, les entreprises confrontées à des charges de travail importantes (comme les plateformes de contenu ou les passerelles API) privilégient souvent NGINX pour gérer efficacement les connexions simultanées et la diffusion de contenu statique.
2) Comment NGINX gère-t-il les requêtes HTTP en interne (architecture événementielle) ?
La principale force de NGINX réside dans son event-driven, non-blocking architectureAu lieu de créer un thread ou un processus distinct pour chaque requête (comme les serveurs traditionnels), NGINX utilise un petit ensemble de processus de travail qui exploitent des boucles d'événements asynchrones. Chaque processus peut gérer des milliers de connexions en attendant les notifications de disponibilité du système d'exploitation et en traitant les événements dès leur survenue. NGINX ne bloquant pas les opérations d'entrée/sortie, il peut servir du contenu statique et du contenu proxy avec un minimum de ressources. Ce modèle est idéal pour les cas d'utilisation à forte concurrence, ce qui le rend plus efficace que les serveurs basés sur des processus en cas de forte charge.
3) Quelles sont les principales différences entre NGINX et Apache ?
Bien que NGINX et Apache soient tous deux des serveurs web populaires, ils diffèrent par leur architecture, leurs performances et leurs objectifs de conception :
| Aspect | Nginx | Apache |
|---|---|---|
| Modèle de concurrence | Piloté par les événements (asynchrone, non bloquant) | Processus / basé sur les threads (bloquant) |
| Utilisation de la mémoire | Faible par connexion | Plus élevé par connexion |
| Meilleur cas d'utilisation | Trafic important, contenu statique, équilibrage de charge | écosystème de contenu dynamique et de modules riches |
| Évolutivité | Balances avec moins de ressources | Nécessite davantage de matériel en raison des processus |
| Gestion des modules | Modules sélectionnés lors de la compilation | Dynamique lors de l'exécution |
La conception de NGINX optimise les performances sous charge, tandis qu'Apache offre une plus grande flexibilité grâce à ses modules dynamiques et à sa large prise en charge des langages de programmation.
4) Quels sont les composants clés d'un fichier de configuration NGINX ?
Un fichier de configuration NGINX (chemin par défaut : /etc/nginx/nginx.conf) est constitué de blocs de directives structurés qui déterminent le comportement de NGINX :
- Contexte principal : paramètres globaux tels que
worker_processes,error_logbauenpid - Bloc Événements : gère les connexions des nœuds de calcul et le traitement multitâche
- Bloc HTTP : Contient les configurations de gestion HTTP (compression, mise en cache, gzip, etc.)
- Bloc serveur : définit les hôtes virtuels (domaines et ports)
- Bloc de localisation : définit les règles de routage et la manière dont les URI spécifiques sont gérées
Ces blocs fonctionnent ensemble pour acheminer les requêtes, définir les paramètres du proxy et configurer SSL/TLS et la mise en cache.
5) Comment recharger en toute sécurité la configuration NGINX sans interruption de service ?
Pour recharger NGINX avec les configurations mises à jour without interrupting active connections, vous utilisez la commande suivante :
nginx -s reload
ou sur des systèmes utilisant systemd:
sudo systemctl reload nginx
Cette commande indique au processus maître de relire les fichiers de configuration et de redémarrer proprement les nœuds de calcul sans interrompre les connexions existantes. Savoir effectuer de tels redémarrages transparents est essentiel dans les environnements à haute disponibilité.
6) Décrivez comment configurer NGINX en tant que proxy inverse.
Un proxy inverse transmet les requêtes client aux serveurs backend (groupe en amont) puis renvoie la réponse. Voici un exemple de bloc de proxy inverse NGINX :
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
}
}
}
Cette configuration améliore la sécurité, assure la répartition de la charge et permet la mise en cache ou la limitation du débit entre les clients et les serveurs d'applications.
7) Expliquez les processus NGINX Master et Worker.
Dans NGINX :
- Le Procédé maître Il gère la configuration, démarre les processus de travail et prend en charge les opérations privilégiées telles que la liaison aux ports.
- Processus des travailleurs effectuer le traitement proprement dit des requêtes — traiter les connexions entrantes et exécuter les règles configurées.
L'utilisation de plusieurs processus améliore la concurrence et peut être optimisée en fonction des cœurs de processeur disponibles et des besoins en trafic. La répartition des rôles améliore les performances et la stabilité.
8) Comment limiter le traitement des noms de serveur non définis dans NGINX ?
Pour abandonner les requêtes sans valeur valide Host En-tête dans NGINX :
server {
listen 80;
server_name "";
return 444;
}
Cette configuration renvoie du code 444, un statut NGINX non standard qui ferme la connexion sans réponse, rejetant ainsi les hôtes non définis et améliorant la sécurité.
9) À quoi sert le module ngx_http_upstream ?
Le ngx_http_upstream_module définissant groups of backend servers (en amont) auxquels NGINX peut transmettre des requêtes en utilisant des directives telles que proxy_pass, fastcgi_pass, ou uwsgi_passCela permet une grande flexibilité dans la mise à l'échelle des applications au sein d'environnements à charge équilibrée. Lorsque plusieurs serveurs backend sont regroupés, NGINX peut répartir le trafic selon des politiques définies, prenant en charge la méthode round-robin et d'autres stratégies.
10) Décrivez comment NGINX est utilisé pour servir du contenu statique et dynamique.
NGINX est très efficace pour servir fichiers statiques (HTML, CSS, images) directement en utilisant sa boucle d'événements optimisée et ses mécanismes d'entrée/sortie de fichiers. contenu dynamiqueNGINX transmet les requêtes aux processeurs backend tels que PHP-FPM. Python Serveurs WSGI ou frameworks applicatifs via FastCGI/proxy : cette séparation permet à NGINX d’exceller en tant que serveur de fichiers statiques tout en exploitant les services backend pour la génération dynamique, garantissant ainsi des performances et une évolutivité optimales.
11) Comment fonctionne l'équilibrage de charge dans NGINX, et quelles sont les différentes méthodes disponibles ?
NGINX offre une robustesse l'équilibrage de charge dans le cadre du upstream Cette directive répartit le trafic sur plusieurs serveurs backend afin d'optimiser les performances et de garantir une haute disponibilité. Elle prend en charge plusieurs méthodes :
| Méthode | Description | Meilleur cas d'utilisation |
|---|---|---|
| Round Robin | Méthode par défaut qui répartit les requêtes entre les serveurs de manière séquentielle. | Charges de travail uniformément réparties. |
| Les moindres connexions | Envoie les requêtes au serveur ayant le moins de connexions actives. | Séances de longue durée. |
| Hachage IP | Utilise l'adresse IP du client pour déterminer le serveur sélectionné. | Persistance de la session. |
| Le moins de temps | Équilibre basé sur le temps de réponse et le nombre de connexions. | Applications sensibles à la latence. |
NGINX peut également effectuer bilans de santé supprimer dynamiquement les serveurs défaillants, garantissant ainsi un flux de trafic continu et une résilience optimale.
12) Quelle est la différence entre NGINX open source et NGINX Plus ?
Nginx Open source est la version communautaire offrant des fonctionnalités essentielles de serveur web, de proxy et d'équilibrage de charge. NGINXPlus est l'édition commerciale qui étend ces fonctionnalités avec des améliorations de niveau entreprise telles que la surveillance avancée, la persistance de session, la reconfiguration dynamique et les contrôles d'intégrité actifs.
| Fonctionnalité | NGINX Open Source | NGINXPlus |
|---|---|---|
| Load Balancing | Basique (Round Robin, hachage IP) | Avancé (Temps minimal, reconfiguration dynamique) |
| Le Monitoring | Outils manuels/externes | Tableau de bord et API intégrés |
| Cache haute performance | Basic | Amélioré par un contrôle de purge |
| Assistance | Communauté uniquement | Support et mises à jour pour les entreprises |
Les organisations ayant des charges de travail critiques choisissent souvent NGINX Plus pour sa fiabilité et son observabilité accrues.
13) Comment implémenter la mise en cache dans NGINX ?
La mise en cache dans NGINX améliore la vitesse de réponse et réduit la charge du serveur en stockant localement le contenu fréquemment consulté. Elle est activée à l'aide de la proxy_cache directive. Exemple de configuration :
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
}
}
Les réponses mises en cache sont servies directement depuis le disque lorsqu'une requête correspondante arrive, évitant ainsi le traitement en amont. Vous pouvez contrôler l'expiration du cache à l'aide de proxy_cache_valid et exclure des URI spécifiques avec proxy_no_cacheCe mécanisme est crucial pour les environnements à fort trafic comme les sites d'actualités ou de commerce électronique.
14) Expliquez le but et l’utilisation de la directive « try_files ».
Le try_files Cette directive vérifie l'existence des fichiers dans un ordre spécifié avant de transmettre une requête à l'emplacement de secours. Elle est couramment utilisée pour routage de site statique or demandes d'une seule page (SPA).
Exemple :
location / {
try_files $uri $uri/ /index.html;
}
Ici, NGINX vérifie d'abord si l'URI demandée correspond à un fichier, puis à un répertoire, et enfin redirige les requêtes non correspondantes vers /index.htmlCela améliore l'efficacité et l'expérience utilisateur en servant directement les fichiers mis en cache ou statiques, évitant ainsi les appels inutiles au serveur d'arrière-plan.
15) Comment NGINX peut-il gérer la terminaison HTTPS et SSL/TLS ?
NGINX fait office de proxy de terminaison SSL/TLS, gérant le chiffrement et le déchiffrement au niveau du serveur avant de transmettre les requêtes non chiffrées aux services en amont. Exemple de configuration :
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.crt;
ssl_certificate_key /etc/ssl/private/example.key;
location / {
proxy_pass http://backend;
}
}
Il prend en charge HTTP / 2, Agrafage OCSP, HSTSbauen suites de chiffrement modernesNGINX permet des communications sécurisées et performantes. La terminaison SSL au niveau de NGINX réduit la charge de chiffrement sur les serveurs backend et simplifie la gestion des certificats.
16) Quelle est la différence entre la réécriture et la redirection dans NGINX ?
Le récrire et réorienter modifient la manière dont les requêtes sont acheminées, mais elles diffèrent fondamentalement :
| Aspect | Récrire | Réorienter |
|---|---|---|
| Type | Réécriture d'URL interne | Redirection des clients externes |
| Code de réponse | 200 (interne) | 301/302 (Redirection HTTP) |
| Visibilité | Transparent pour l'utilisateur | Le client voit une nouvelle URL |
| Case Study | URL optimisées pour le référencement, routage | Migration de domaine, mise en œuvre du protocole HTTPS |
Exemple :
rewrite ^/oldpage$ /newpage permanent; # Redirect rewrite ^/img/(.*)$ /assets/$1 break; # Rewrite
Comprendre cette distinction est essentiel pour optimiser efficacement le référencement naturel et la logique de routage.
17) Comment sécuriser NGINX contre les vulnérabilités courantes ?
Le renforcement de la sécurité implique une combinaison de bonnes pratiques :
- Désactiver les jetons du serveur :
server_tokens off; - Limiter les méthodes de requête : Autoriser uniquement les méthodes GET, POST et HEAD.
- Limiter les dépassements de tampon : Configurez
client_max_body_sizeetclient_body_buffer_size. - Utilisez HTTPS avec des algorithmes de chiffrement modernes.
- Activer la limitation de débit via
limit_req_zone. - Masquer les informations de version et désactiver l'affichage du répertoire.
De plus, en utilisant un Pare-feu d'application Web (WAF) comme ModSecurity with NGINX Il est possible de filtrer le trafic malveillant. La mise à jour régulière de NGINX et l'application des correctifs de sécurité sont essentielles pour prévenir les attaques zero-day.
18) Que sont les variables NGINX et comment sont-elles utilisées dans les configurations ?
Les variables NGINX stockent des données dynamiques utilisées dans les configurations et le traitement des journaux. Elles peuvent représenter des en-têtes de requêtes, des adresses IP de clients ou des valeurs calculées. Exemples : $remote_addr, $host, $uri, $request_methodbauen $upstream_addr.
Par exemple:
log_format custom '$remote_addr - $host - $uri';
Les variables ajoutent de la flexibilité, permettant le routage conditionnel et la journalisation personnalisée. Vous pouvez également définir des variables personnalisées à l'aide de set directive, qui facilite la conception de configurations modulaires.
19) Comment configurer la limitation de débit dans NGINX ?
La limitation du débit contrôle la fréquence à laquelle les utilisateurs peuvent envoyer des requêtes, protégeant ainsi contre les attaques par force brute et les attaques DDoS. Elle se configure à l'aide de limit_req_zone directif:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
location / {
limit_req zone=mylimit burst=5;
}
}
Cela autorise une requête par seconde, avec un pic à cinq. NGINX supprime les requêtes excédentaires ou les retarde selon la configuration. La limitation du débit garantit une utilisation équitable des ressources et évite la surcharge du serveur.
20) Quels sont les avantages et les inconvénients de l'utilisation de NGINX comme proxy inverse ?
NGINX, utilisé comme proxy inverse, offre de nombreux avantages mais aussi certains inconvénients :
| Avantages | Désavantages |
|---|---|
| Gestion des hautes performances et de la concurrence | Nécessite un réglage manuel pour les déploiements à grande échelle. |
| Terminaison SSL et sécurité centralisée | Prise en charge limitée des modules dynamiques (à la compilation) |
| Prise en charge de l'équilibrage de charge et de la mise en cache | Configuration complexe pour les nouveaux utilisateurs |
| Filtrage de la couche application | Absence d'exécution de contenu dynamique natif |
Ses avantages surpassent largement ses limitations dans la plupart des scénarios d'entreprise, faisant de NGINX un composant indispensable de l'infrastructure web moderne.
21) Comment surveiller les performances et l'état de santé de NGINX en production ?
La surveillance de NGINX est essentielle pour identifier les goulots d'étranglement, les pannes et les comportements anormaux du trafic. Plusieurs approches peuvent être utilisées :
- Module d'état intégré (
stub_status):Affiche les connexions actives, les requêtes traitées et les états de lecture/écriture. Exemple :
location /nginx_status { stub_status; allow 127.0.0.1; deny all; } - Tableau de bord NGINX Plus : Fournit des indicateurs en temps réel via une API REST et une interface graphique.
- Intégrations tierces : Des outils comme Prometheus, Grafana, Datadog ou ELK peuvent collecter des métriques et des journaux.
- Journaux d'accès et d'erreurs : La rotation régulière des journaux et leur analyse à l'aide d'outils comme GoAccess ou AWStats améliorent l'observabilité.
La surveillance permet de garantir la disponibilité, la détection rapide des pannes et la planification des capacités.
22) Quelle est la différence entre les directives proxy_pass et fastcgi_pass ?
Les deux directives transmettent les requêtes aux services backend, mais sont conçues pour des protocoles différents :
| La directive | Interet | Protocole backend | Exemple d'utilisation |
|---|---|---|---|
proxy_pass |
Transfère les requêtes HTTP ou HTTPS aux serveurs backend. | HTTP | Revproxy inverse des API Web ou des microservices |
fastcgi_pass |
Envoie des requêtes à un processeur FastCGI | FastCGI | PHP-FPM, Python Applications FastCGI |
Exemple :
location /api/ {
proxy_pass http://backend;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
En résumé, utilisez proxy_pass pour les backends HTTP génériques et fastcgi_pass pour les environnements d'exécution de langages dynamiques comme PHP.
23) Comment configurer la compression gzip dans NGINX et quels sont ses avantages ?
L'activation de la compression Gzip dans NGINX réduit la consommation de bande passante et améliore le temps de chargement en compressant les réponses textuelles avant de les envoyer aux clients.
Exemple de configuration :
gzip on; gzip_types text/plain text/css application/json application/javascript; gzip_min_length 1024; gzip_comp_level 6; gzip_vary on;
Avantages :
- Réduit la taille des transferts de fichiers jusqu'à 70 %.
- Améliore le temps de réponse du serveur (TTFB) et les scores de performance des pages.
- Permet de réduire les coûts de bande passante, ce qui est particulièrement avantageux pour les utilisateurs mobiles.
Toutefois, il ne doit pas être appliqué aux fichiers déjà compressés (par exemple, .zip, .jpg, .png) pour éviter une surcharge du processeur.
24) Quelles sont les meilleures pratiques pour optimiser NGINX en cas de trafic élevé ?
L'optimisation en cas de trafic élevé implique un réglage précis des ressources et des paramètres de configuration :
| Région | La directive | Pratique recommandée |
|---|---|---|
| Ouvriers | worker_processes auto; |
Correspondance des cœurs du processeur |
| Connexions | worker_connections 4096; |
Augmenter la concurrence |
| Rester en vie | keepalive_timeout 65; |
Optimiser la réutilisation des clients |
| Fichier Descriptors | OS ulimit -n |
Augmenter les limites pour les prises ouvertes |
| Cache haute performance | proxy_cache_path |
Réduire la charge du serveur dorsal |
| gzip | gzip on; |
Compresser les réponses textuelles |
De plus, en utilisant E/S disque asynchrones, l'équilibrage de chargebauen contrôles sanitaires en amont assure la stabilité et la rapidité en cas de requêtes simultanées massives.
25) Comment NGINX gère-t-il les connexions WebSocket ?
Les WebSockets permettent une communication bidirectionnelle entre le client et le serveur, essentielle pour les applications en temps réel. NGINX prend en charge cette fonctionnalité nativement grâce à un transfert d'en-tête approprié.
Exemple de configuration :
location /ws/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Points clés:
- Le
UpgradeetConnectionLes en-têtes sont obligatoires. - Assurez-vous que NGINX utilise HTTP/1.1 pour les connexions TCP persistantes.
- L'équilibrage de charge des WebSockets peut nécessiter l'utilisation de sessions persistantes.
ip_hash.
Cette configuration prend en charge des applications telles que le chat, le trading d'actions ou les jeux.
26) Quel est le but de la directive « worker_rlimit_nofile » ?
worker_rlimit_nofile Définit le nombre maximal de descripteurs de fichiers ouverts disponibles pour les processus de travail. Cette limite influe directement sur le nombre de connexions simultanées que NGINX peut gérer. Exemple :
worker_rlimit_nofile 100000;
Augmenter cette limite est essentiel pour les systèmes à forte concurrence (comme les passerelles API ou les plateformes de streaming). Cependant, la limite du système d'exploitation (ulimit -n) doit également être augmentée pour correspondre à cette valeur par souci de cohérence.
27) Comment NGINX peut-il être utilisé pour la réécriture d'URL ou la redirection automatique vers HTTPS ?
La redirection HTTP vers HTTPS garantit une communication sécurisée. Exemple :
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
Cette configuration génère un Redirection permanente 301 De HTTP à HTTPS. Pour un contrôle plus précis, les règles de réécriture peuvent imposer une redirection spécifique au chemin :
rewrite ^/oldpath$ /newpath permanent;
L'application automatique du protocole HTTPS améliore le référencement naturel, empêche les attaques de type « homme du milieu » et garantit une expérience utilisateur cohérente.
28) Quelles sont les raisons courantes des erreurs « 502 Bad Gateway » dans NGINX ?
Une erreur « 502 Bad Gateway » indique que NGINX, agissant comme proxy, n'a pas reçu de réponse valide d'un serveur en amont. Les causes fréquentes sont les suivantes :
- Panne ou indisponibilité du serveur backend.
- Incorrect
proxy_passURL ou chemin du socket. - Délai d'attente en amont (
proxy_read_timeout(trop bas). - Pare-feu ou SELinux bloquant les connexions en amont.
- Paramètres FastCGI mal configurés (pour PHP).
Pour déboguer, consultez les journaux d'erreurs (/var/log/nginx/error.log), vérifier l'accessibilité en amont et tester directement les réponses du serveur d'arrière-plan via curl.
29) Comment NGINX prend-il en charge les microservices et les architectures basées sur des conteneurs (par exemple, Docker, Kubernetes) ?
NGINX est idéal pour environnements de microservices Grâce à sa conception légère et à sa fonctionnalité de proxy inverse, il sert, dans Docker ou Kubernetes :
- Contrôleur d'entrée : Gère le trafic HTTP/S externe vers les services internes.
- Passerelle de service : Assure le routage, l'équilibrage de charge et l'authentification.
- Proxy Sidecar : Améliore la résilience et l'observabilité dans les maillages de services (par exemple, Istio).
Les configurations NGINX peuvent être mises à jour dynamiquement via les ConfigMaps de Kubernetes, permettant un contrôle centralisé du trafic et la gestion SSL. Son approche modulaire s'accorde parfaitement avec les déploiements conteneurisés et natifs du cloud.
30) Quelles sont les différentes manières d'améliorer la sécurité de NGINX pour les systèmes de production ?
L'amélioration de la sécurité de NGINX nécessite une configuration multicouche :
- Renforcement SSL/TLS : Utilisez des algorithmes de chiffrement modernes, désactivez SSLv3/TLSv1.0.
- Limiter les méthodes HTTP : N'autorisez que les verbes sûrs (GET, POST, HEAD).
- En-têtes de sécurité :
add_header X-Frame-Options "DENY"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block";
- Masquer les informations de version :
server_tokens off; - Activer la limitation du débit et les contrôles d'accès.
- Intégrer un WAF ou Fail2Ban pour la prévention des attaques par force brute.
Combinées, ces mesures créent un environnement NGINX renforcé, de qualité production et résistant aux attaques courantes.
31) Comment déboguer efficacement les problèmes NGINX ?
Le débogage de NGINX implique l'analyse systématique des journaux, des fichiers de configuration et des états des processus. Les étapes clés sont les suivantes :
- Vérifier la syntaxe :
- Valide la configuration avant les rechargements.
- Fournit des diagnostics d'exécution détaillés.
- Tester la connectivité : Utilisez le
curl -vorwgetvérifier l'accessibilité du serveur. - Surveiller les connexions actives : Via
stub_statusornetstat.
nginx -t
Activer la journalisation de débogage :
error_log /var/log/nginx/error.log debug;
Analyser les journaux d'accès : Détecter les codes de réponse et les modèles de requêtes à l'aide de :
tail -f /var/log/nginx/access.log
Comprendre les processus de traitement, les limites de mémoire tampon et les réponses en amont de NGINX permet de repérer rapidement les goulots d'étranglement dans les systèmes de production.
32) Comment configurez-vous la journalisation NGINX et quels sont les formats de journal personnalisés ?
NGINX fournit des mécanismes de journalisation flexibles via access_log et error_log directives.
Exemple de configuration :
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$request_time"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
Vous pouvez définir formats personnalisés inclure des indicateurs tels que $upstream_addr, $request_time, ou $bytes_sent.
Pour une observabilité avancée, les journaux sont souvent envoyés à ELK, Loki ou Splunk pour l'analyse et la création de tableaux de bord en temps réel.
33) Quel est le rôle de la directive proxy_buffering dans NGINX ?
proxy_buffering contrôle si NGINX met en mémoire tampon les réponses des serveurs en amont avant de les envoyer aux clients.
| Paramètres | Description | Case Study |
|---|---|---|
proxy_buffering on; |
Bufferla réponse complète pour un débit optimisé | Par défaut ; améliore les performances |
proxy_buffering off; |
Transmet les données directement aux clients sans mise en mémoire tampon. | Diffusion en continu en temps réel ou API |
Par exemple, pour désactiver la mise en mémoire tampon :
location /stream/ {
proxy_buffering off;
}
La désactivation de la mise en mémoire tampon est idéale pour les services de chat ou de streaming, mais peut réduire le débit pour le trafic web classique.
34) Expliquez comment la mise en cache NGINX peut être invalidée ou purgée.
NGINX Open Source n'intègre pas de purge du cache, mais celle-ci peut être réalisée de plusieurs manières :
- Purge manuelle : Supprimer les fichiers du répertoire cache.
rm -rf /var/cache/nginx/*
- Module tiers : Utilisez le
ngx_cache_purgepurger via une requête HTTP :location ~ /purge(/.*) { proxy_cache_purge my_cache $host$1; } - Fonctionnalité NGINX Plus : Permet la purge dynamique du cache via une API.
La purge garantit le remplacement rapide du contenu obsolète, maintenant ainsi la fraîcheur et la cohérence du contenu sur l'ensemble des déploiements CDN ou multi-nœuds.
35) Comment NGINX gère-t-il les délais d'expiration de connexion ?
NGINX propose plusieurs directives de délai d'attente pour contrôler la durée pendant laquelle il attend les réponses du client ou du serveur en amont :
| La directive | Interet | Valeur par défaut (s) |
|---|---|---|
client_body_timeout |
Temps d'attente pour le corps du client | 60 |
client_header_timeout |
Délai d'attente pour l'en-tête du client | 60 |
keepalive_timeout |
Connexions de maintien en vie inactives | 75 |
send_timeout |
Il est temps d'envoyer les données au client | 60 |
proxy_read_timeout |
Délai d'attente pour la réponse en amont | 60 |
Un réglage adéquat évite les déconnexions inutiles et garantit une expérience utilisateur plus fluide, même dans des conditions de réseau variables.
36) Comment implémenter un déploiement bleu-vert avec NGINX ?
Dans une déploiement bleu-vertDeux environnements (Bleu = actif, Vert = en veille) fonctionnent simultanément. NGINX fait office de routeur de trafic entre eux.
Exemple de configuration :
upstream app_cluster {
server blue.example.com;
#server green.example.com; # Uncomment during switch
}
server {
location / {
proxy_pass http://app_cluster;
}
}
Lorsque la nouvelle version (verte) est testée et vérifiée, le trafic est basculé en mettant à jour la définition en amont et en rechargeant NGINX (nginx -s reload).
Cette méthode assure zéro temps d'arrêt lors des mises à jour ou des restaurations d'applications.
37) Qu'est-ce que la limitation de débit en rafale, et comment améliore-t-elle les performances de NGINX ?
Le éclatement Le paramètre de limitation de débit permet le passage temporaire de pics de trafic brefs sans rejet immédiat.
Exemple :
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
location /api/ {
limit_req zone=mylimit burst=5 nodelay;
}
Ici, cinq requêtes supplémentaires sont acceptées instantanément avant l'application de la limitation de débit.
Cette technique permet de lisser les pics de trafic, assurant ainsi une expérience utilisateur cohérente sans surcharger les systèmes backend.
38) Comment NGINX gère-t-il IPv6 et les environnements à double pile ?
NGINX prend entièrement en charge IPv6 dans les configurations serveur et en amont. Exemple :
server {
listen [::]:80 ipv6only=on;
server_name example.com;
}
La prise en charge double pile (IPv4 + IPv6) est assurée par l'inclusion des deux :
listen 80; listen [::]:80;
La compatibilité IPv6 garantit une accessibilité plus large, notamment pour les clients mobiles et internationaux, et est essentielle au respect des normes Internet modernes.
39) Comment configurer les sessions persistantes dans l'équilibrage de charge NGINX ?
Les sessions persistantes garantissent que les requêtes provenant d'un même client sont toujours acheminées vers le même serveur dorsal.
- L'utilisation de
ip_hash:upstream backend { ip_hash; server app1.example.com; server app2.example.com; } - Cookie collant NGINX Plus :
Persistance de session avancée avec cookies configurables.
Les sessions persistantes sont essentielles pour les applications avec état, comme les tableaux de bord utilisateur ou les paniers d'achat, car elles garantissent la cohérence des données de session sans stockage partagé.
40) Quels sont les principaux niveaux de journalisation dans NGINX, et en quoi diffèrent-ils ?
NGINX prend en charge des niveaux de journalisation hiérarchiques pour contrôler la verbosité du journal des erreurs.
| LEVEL | Description |
|---|---|
debug |
Informations détaillées pour le dépannage (très verbeuses) |
info |
Informations générales sur l'exécution |
notice |
Événements importants mais non critiques |
warn |
Problèmes potentiels ou erreurs de configuration |
error |
Operaerreurs nationales nécessitant une attention particulière |
crit, alert, emerg |
Défaillances critiques et alertes système |
Exemple de configuration :
error_log /var/log/nginx/error.log warn;
L'ajustement des niveaux de journalisation en fonction de l'environnement (débogage en préproduction, avertissement en production) permet de maintenir un équilibre entre visibilité et performance.
41) Comment évaluez-vous les performances de NGINX ?
L'évaluation des performances de NGINX consiste à mesurer le débit, la latence et la concurrence afin d'identifier les goulots d'étranglement de la configuration. Les outils couramment utilisés incluent :
ApacheBench (ab) :
ab -n 10000 -c 100 http://example.com/
- Les tests portent sur le volume et la concurrence des requêtes.
- travail : Fournit des percentiles de latence et des taux de requêtes détaillés.
- siège / httperf : Simule la charge de trafic réelle.
- Grafana + Prometheus : Surveille les indicateurs de performance en temps réel.
L'analyse comparative devrait mesurer des paramètres comme requests per second (RPS), time per requestbauen error rate.
Réglage des variables comme worker_processes, worker_connectionsbauen keepalive_timeout Améliore significativement le débit observé.
42) Comment NGINX peut-il s'intégrer aux pipelines CI/CD ?
NGINX s'intègre parfaitement à CI / CD pour le déploiement automatisé, les tests et la gestion de la configuration. Les approches courantes comprennent :
- Infrastructure en tant que code (IaC) : Gérez les configurations avec les graphiques Ansible, Terraform ou Helm.
- Conteneurs Docker : Créez et déployez des images NGINX à l'aide d'outils CI (Jenkins, GitLab CI ou GitHub Actions).
- Tests automatisés : Valider les configurations à l'aide de
nginx -tdans les différentes étapes du processus. - Bleu-vert / Canary Automatisation du déploiement : Mettre à jour dynamiquement les serveurs en amont pendant le déploiement.
Exemple d'extrait de code GitLab CI :
deploy:
script:
- nginx -t
- systemctl reload nginx
Le déploiement automatisé garantit des déploiements NGINX cohérents, versionnés et fiables.
43) Expliquez le rôle du contrôleur d'entrée NGINX dans Kubernetes.
Le Contrôleur d'entrée NGINX Il gère le trafic entrant vers les services Kubernetes. Il traduit dynamiquement les ressources d'entrée Kubernetes en configurations NGINX.
Fonctions clés:
- Achemine les requêtes HTTP/S vers le service approprié.
- Fournit la terminaison SSL, la limitation du débit et la réécriture d'URL.
- Prend en charge l'équilibrage de charge entre les pods.
- Permet d'ajouter des annotations pour un contrôle précis (par exemple, cible de réécriture, taille du corps du proxy).
Exemple de fichier YAML d'entrée :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
annotations: nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80
Cette architecture découple la logique de routage du trafic des déploiements de conteneurs pour une évolutivité flexible.
44) Comment NGINX gère-t-il HTTP/2 et quels sont ses avantages ?
NGINX prend entièrement en charge HTTP / 2, successeur de HTTP/1.1, améliorant l'efficacité grâce au multiplexage et à la compression des en-têtes.
Pour activer HTTP/2 :
server {
listen 443 ssl http2;
...
}
Avantages :
| Fonctionnalité | Description |
|---|---|
| Multiplexage | Plusieurs requêtes par connexion TCP |
| Compression d'en-tête (HPACK) | Réduit l'utilisation de la bande passante |
| Serveur Push | Envoie préventivement des actifs aux clients |
| TLS plus rapide | Poignées de main sécurisées et simplifiées |
HTTP/2 réduit considérablement la latence et les temps de chargement des pages, notamment pour les applications web modernes comportant de nombreuses ressources.
45) Quelle est la différence entre le keepalive en amont et la réutilisation de la connexion dans NGINX ?
Maintien en vie en amont Maintient des connexions persistantes aux serveurs backend, réduisant ainsi la surcharge liée à la négociation TCP. Exemple :
upstream backend {
server app1.example.com;
keepalive 32;
}
Différence:
| Aspect | Rester en vie | Réutilisation de la connexion |
|---|---|---|
| Domaine | Entre NGINX et en amont | Entre NGINX et les clients |
| Interet | Optimisation du backend | performances du frontend |
| Configuration | keepalive à l'intérieur upstream |
keepalive_timeout in server bloc |
Ces deux techniques réduisent la latence mais desservent des couches de communication différentes (côté client contre côté serveur).
46) Comment reconfigurer dynamiquement NGINX sans le redémarrer ?
Pour appliquer de nouvelles configurations de manière dynamique sans temps d'arrêt, Utilisez l' reload mécanisme:
nginx -t && nginx -s reload
Cela signale le processus maître pour créer de nouveaux nœuds de calcul avec des configurations mises à jour tout en arrêtant proprement les anciens.
Dans NGINX Plus, des modifications peuvent être apportées via l'API (par exemple, en ajoutant dynamiquement des serveurs en amont) :
curl --request POST \
--url http://localhost:8080/api/3/http/upstreams/backend/servers \
--header 'Content-Type: application/json' \
--data-raw '{"server":"10.0.0.12"}'
Cette fonctionnalité permet des déploiements sans interruption de service dans les pipelines DevOps modernes.
47) Quelles sont les principales différences entre un proxy inverse et un proxy direct dans NGINX ?
| Aspect | Revautre proxy | Proxy de transfert |
|---|---|---|
| Visibilité client | Clients ignorant l'existence des serveurs backend | Serveurs ignorant l'identité du client |
| Utilisation principale | Équilibrage de charge, mise en cache, terminaison SSL | Filtrage, anonymat, contrôle d'accès |
| Cas d'utilisation courant | répartition du trafic Web | Navigation sortante sécurisée ou d'entreprise |
| Support NGINX | Natif et largement utilisé | Nécessite une configuration personnalisée |
Exemple (proxy de transfert) :
location / {
proxy_pass $scheme://$http_host$request_uri;
proxy_set_header Host $http_host;
}
RevLe proxy inverse reste le cas d'utilisation dominant, notamment pour les passerelles API et les architectures de microservices.
48) Comment NGINX peut-il être utilisé pour la limitation et la régulation du débit des API ?
La limitation du débit protège les API contre les abus et garantit une utilisation équitable. Exemple de configuration :
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
server {
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
proxy_pass http://backend;
}
}
Mécanisme:
limit_req_zone: Définit la zone et le débit de la mémoire partagée.burst: Permet des pics temporaires limités.nodelay: Applique immédiatement les limites.
Cette configuration garantit que chaque adresse IP cliente ne peut effectuer que 10 requêtes par seconde, tout en autorisant de courtes rafales.
49) Quels sont les cas d'utilisation typiques de NGINX dans les environnements DevOps d'entreprise ?
Dans les écosystèmes DevOps d'entreprise, NGINX remplit plusieurs rôles essentiels :
- Serveur Web: Diffusion de contenu statique haute performance.
- RevProxy/équilibreur de charge erse : Gestion du trafic entre les microservices.
- Passerelle API : Authentification, routage et limitation du débit.
- Contrôleur d'entrée : Pour les clusters Kubernetes.
- Couche de mise en cache du contenu : Réduit la charge du serveur.
- Point de terminaison SSL : Gestion centralisée des certificats.
- Point de terminaison de surveillance : Intégration des indicateurs et de l'observabilité.
Sa légèreté et sa conception modulaire rendent NGINX indispensable dans les pipelines CI/CD, les clouds hybrides et les clusters à haute disponibilité.
50) Quelles sont les principales différences entre NGINX et HAProxy pour l'équilibrage de charge ?
Ce sont deux équilibreurs de charge haute performance, mais ils diffèrent par leur objectif et leur architecture :
| Fonctionnalité | Nginx | HAProxy |
|---|---|---|
| Le rôle principal | Serveur Web + proxy inverse | Équilibreur de charge TCP/HTTP dédié |
| Simplicité de configuration | Plus facile pour les charges de travail Web | Contrôle complexe mais plus granulaire |
| Prise en charge des couches | L7 (HTTP), L4 partiel | L4 et L7 complets |
| Reconfiguration dynamique | Limité (open source) | mises à jour natives |
| Performances | Idéal pour les charges de travail mixtes | Supérieur pour l'équilibrage de charge brute |
| Options de Lentilles Supplémentaires | Mise en cache, compression, contenu statique | Contrôles sanitaires, tables de contrôle |
Les entreprises s'associent souvent NGINX (interface utilisateur) et HAProxy (serveur dorsal) pour un routage et une évolutivité optimaux.
🔍 Questions d'entretien NGINX les plus fréquentes, avec des scénarios concrets et des réponses stratégiques
1) Qu'est-ce que NGINX et pourquoi est-il couramment utilisé dans les environnements de production ?
Attendu du candidat : L'intervieweur souhaite évaluer vos connaissances fondamentales de NGINX et votre compréhension de sa valeur pratique dans les systèmes du monde réel.
Exemple de réponse: « NGINX est un serveur web et un proxy inverse haute performance reconnu pour son architecture événementielle. Il est couramment utilisé en production car il peut gérer efficacement un grand nombre de connexions simultanées tout en consommant moins de ressources système que les serveurs web traditionnels. »
2) Pouvez-vous expliquer la différence entre NGINX et Apache ?
Attendu du candidat : L'intervieweur évalue votre capacité à comparer les technologies et à choisir l'outil approprié en fonction des cas d'utilisation.
Exemple de réponse: « NGINX utilise une architecture asynchrone et non bloquante, ce qui le rend plus efficace pour gérer un trafic important et du contenu statique. Apache utilise un modèle basé sur les processus, plus flexible pour les configurations dynamiques, mais susceptible de consommer davantage de ressources en cas de forte charge. »
3) Comment NGINX agit-il en tant que proxy inverse ?
Attendu du candidat : L'intervieweur souhaite confirmer votre compréhension des concepts de proxy inverse et de la manière dont NGINX s'intègre dans les architectures modernes.
Exemple de réponse: « NGINX agit comme un proxy inverse en recevant les requêtes des clients et en les transmettant aux serveurs backend. Il renvoie ensuite les réponses du serveur au client, ce qui améliore la sécurité, la répartition de la charge et les performances globales. »
4) Décrivez une situation où vous avez utilisé NGINX pour l'équilibrage de charge.
Attendu du candidat : L'intervieweur recherche une expérience pratique et votre capacité à appliquer les fonctionnalités de NGINX dans des scénarios réels.
Exemple de réponse: « Dans mon poste précédent, j'ai configuré NGINX pour répartir le trafic entre plusieurs serveurs d'applications à l'aide des algorithmes round-robin et du moindre nombre de connexions. Cette approche a amélioré la disponibilité des applications et a empêché qu'un serveur unique ne devienne un goulot d'étranglement. »
5) Comment gérez-vous la configuration SSL et HTTPS dans NGINX ?
Attendu du candidat : L'intervieweur souhaite évaluer votre compréhension des meilleures pratiques en matière de sécurité et de gestion de la configuration.
Exemple de réponse: « À mon poste précédent, j’ai configuré le protocole SSL en installant des certificats, en activant les écouteurs HTTPS et en imposant des suites de chiffrement robustes. J’ai également mis en œuvre la redirection HTTP vers HTTPS afin de garantir une communication sécurisée sur tous les points de terminaison. »
6) Quelles étapes suivriez-vous pour résoudre une erreur 502 Bad Gateway dans NGINX ?
Attendu du candidat : L'intervieweur teste vos compétences en résolution de problèmes et votre méthodologie de dépannage.
Exemple de réponse: « Je commencerais par consulter les journaux d'erreurs NGINX pour identifier les problèmes de connectivité du serveur. Je vérifierais ensuite que les serveurs en amont sont en cours d'exécution, je confirmerais la configuration correcte du proxy et je m'assurerais que les délais d'attente sont correctement configurés. »
7) Comment optimiser les performances de NGINX pour les applications à fort trafic ?
Attendu du candidat : L'intervieweur souhaite savoir comment vous abordez l'optimisation des performances et la scalabilité.
Exemple de réponse: « Dans mon précédent emploi, j’ai optimisé NGINX en activant la compression gzip, en ajustant les processus de travail et en configurant la mise en cache du contenu statique. Ces modifications ont permis de réduire considérablement les temps de réponse et la charge du serveur. »
8) Pouvez-vous expliquer comment NGINX gère le contenu statique par rapport au contenu dynamique ?
Attendu du candidat : L'intervieweur évalue votre compréhension de la gestion des requêtes et de l'optimisation des performances.
Exemple de réponse: « NGINX sert le contenu statique directement et très efficacement depuis le système de fichiers. Pour le contenu dynamique, il transfère les requêtes aux serveurs d'applications ou à des services tels que PHP-FPM, permettant à chaque composant de se concentrer sur sa fonction principale. »
9) Comment gérez-vous et testez-vous les modifications de configuration NGINX en toute sécurité ?
Attendu du candidat : Le recruteur souhaite comprendre votre approche en matière de fiabilité et de réduction des risques.
Exemple de réponse: « Je valide les modifications de configuration à l'aide de la commande de test de configuration NGINX avant de recharger le service. J'applique également les modifications pendant les fenêtres de maintenance et je surveille attentivement les journaux après le déploiement. »
10) Décrivez une situation où vous avez dû résoudre rapidement une panne liée à NGINX.
Attendu du candidat : L'intervieweur évalue votre capacité à performer sous pression et à communiquer efficacement lors d'incidents.
Exemple de réponse: « Dans mon poste précédent, une panne est survenue en raison d'une mauvaise configuration d'un service en amont. J'ai rapidement identifié le problème grâce aux journaux, rétabli la configuration précédente et communiqué régulièrement l'état d'avancement aux parties prenantes jusqu'au rétablissement complet du service. »
