16 Mai

Débuguer sa Config Nginx et ses Regex

Pendant la rédaction de la précédente série d’articles, je dois avouer avoir passé du temps à débuguer ma configuration Nginx. Bien sûr, le premier réflexe est de passer son error_log en debug. Mais il n’apporte qu’une aide limitée, et il est toujours aussi difficile de savoir quel est le comportement exact de Nginx ou pourquoi cette damnée regex ne fonctionne pas exactement comment il faut.

Rafraîchir sa Maîtrise des Regex

Tester ses regex au hasard sans trop comprendre comment ça marche donne rarement de bon résultats. Ça tombe bien, le site RegexOne propose un excellent tutoriel interactif aussi bien pour apprendre que pour se rafraîchir la mémoire. Un must donc.

Tester et Débuguer ses Regex

Néanmoins, une fois les bases en tête, on finit toujours par bloquer. Est-ce que ma variable prend bien la valeur que j’espère ? Pourquoi est-ce que j’obtiens une erreur 404 ou 502 ? Pas de soucis, Regex101 propose de tester sa regex contre une vraie uri, tout en expliquant ce qui se passe, quelles valeurs prennent les variables etc. En plus, il propose PCRE la même librairie utilisée par Nginx.

Espionner Nginx

Un truc très utile consiste en surveiller les appels système de Nginx avec strace. Pour l’installer sous debian, il suffit de passer la commande apt-get install strace.

Si vous voyez plusieurs « worker process », il faudra repasser dans le fichier /etc/nginx/nginx.conf le paramètre worker_processes à 1. Pour voir quels sont les résultats des try_files de nginx, on peut par exemple faire un grep sur « stat »:

Mais pas de Miracle

Rien ne remplacera une bonne et répétée lecture de la documentation officielle pour comprendre les mécanismes de Nginx en détails et produire une configuration qui fonctionne non seulement aujourd’hui mais aussi demain !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.