web-dev-qa-db-fra.com

Comment générer une variable dans le journal nginx pour le débogage

Je teste nginx et souhaite afficher des variables dans les fichiers journaux. Comment puis-je faire cela et quel fichier journal ira-t-il (accès ou erreur).

92
lulalala

Vous pouvez envoyer des valeurs de variable nginx via des en-têtes. Pratique pour le développement.

add_header X-uri "$uri";

et vous verrez dans les en-têtes de réponse de votre navigateur:

X-uri:/index.php

Je le fais parfois lors du développement local.

Il est également pratique pour vous dire si une sous-section est exécutée ou non. Saupoudrez-le simplement dans vos clauses pour voir si elles sont utilisées.

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
    add_header X-debug-message "A static file was served" always;
    ...
}

location ~ \.php$ {
    add_header X-debug-message "A php file was used" always;
    ...
}

Donc, visiter une URL comme http://www.example.com/index.php déclenchera le dernier en-tête lors de la visite http://www.example.com/img/my- ducky.png déclenchera l'ancien en-tête.

159
yuvilio

Vous pouvez renvoyer une chaîne simple comme réponse HTTP:

location /
{
    return 200 $document_root;
}

Notez que vous devez visiter une page se terminant par .html si vous ne souhaitez pas modifier les en-têtes de page.

43
Thomas Decaux

Vous pouvez définir un format de journal d'accès personnalisé à l'aide de log_format directive qui enregistre les variables qui vous intéressent.

19
mgorven

Une autre option consiste à inclure le module echo lorsque vous construisez nginx, ou à installer OpenResty qui est nginx fourni avec un tas d'extensions (comme echo.)

Ensuite, vous pouvez simplement saupoudrer votre configuration avec des instructions comme:

echo "args: $args"
7
Mark Evans