163 votes

Comment afficher une variable dans le journal de nginx pour le débogage ?

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

244voto

Chris Points 41

Vous pouvez envoyer à nginx des valeurs variables via les 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 pendant le développement local.

C'est également pratique pour vous dire si une sous-section est exécutée ou non. Il suffit de le saupoudrer dans vos clauses pour savoir 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;
    ...
}

Ainsi, en visitant une url comme http://www.example.com/index.php déclenchera ce dernier en-tête tout en visitant http://www.example.com/img/my-ducky.png déclenchera l'ancien en-tête.

74voto

Thomas Decaux Points 1179

Vous pouvez renvoyer une simple chaîne de caractères 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 la page.

25voto

mgorven Points 29736

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

8voto

Akim Khalilov Points 411

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

Ensuite, vous pouvez simplement saupoudrer votre configuration de déclarations comme :

echo "args: $args"

7voto

Aucun de ces éléments ne répond à la question posée (log)

Cependant, @Victor Aguilar - a un commentaire sur cette réponse, qui devrait être une réponse ! Il indique comment enregistrer les variables, et cela fonctionne. Merci !

https://serverfault.com/a/404628/400075

c'est-à-dire dans /etc/nginx/nginx.conf

error_log /var/log/nginx/error.log debug;

donne lieu au type d'enregistrement suivant :

2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "SCRIPT_FILENAME: /usr/lib/cgit/cgit.cgi/something.git/cgit.cgi"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "QUERY_STRING"
2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "QUERY_STRING: "
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "REQUEST_METHOD"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script var: "GET"
2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "REQUEST_METHOD: GET"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "CONTENT_TYPE"
2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "CONTENT_TYPE: "
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "CONTENT_LENGTH"
2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "CONTENT_LENGTH: "
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "SCRIPT_NAME"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script var: "/cgit/cgit.cgi/something.git/cgit.cgi"
2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "SCRIPT_NAME: /cgit/cgit.cgi/something.git/cgit.
cgi"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "REQUEST_URI"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script var: "/cgit/cgit.cgi/something.git/"
2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "REQUEST_URI: /cgit/cgit.cgi/something.git/"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "DOCUMENT_URI"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script var: "/cgit/cgit.cgi/something.git/"
2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "DOCUMENT_URI: /cgit/cgit.cgi/something.git/"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "DOCUMENT_ROOT"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script var: "/usr/lib"
2021/03/06 15:14:48 [debug] 2550#2550: *1 fastcgi param: "DOCUMENT_ROOT: /usr/lib"
2021/03/06 15:14:48 [debug] 2550#2550: *1 http script copy: "SERVER_PROTOCOL"
2021/03/06 15:14:48 [debug] 2550#2550: *....

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X