it-swarm.com.de

So geben Sie eine Variable im Nginx-Protokoll zum Debuggen aus

Ich teste Nginx und möchte Variablen in die Protokolldateien ausgeben. Wie kann ich das machen und welche Protokolldatei wird es gehen (Zugriff oder Fehler).

92
lulalala

Sie können Nginx-Variablenwerte über Header senden. Praktisch für die Entwicklung.

add_header X-uri "$uri";

und Sie werden in den Antwortheadern Ihres Browsers sehen:

X-uri:/index.php

Ich mache das manchmal während der lokalen Entwicklung.

Es ist auch praktisch, um Ihnen mitzuteilen, ob ein Unterabschnitt ausgeführt wird oder nicht. Streuen Sie es einfach in Ihre Klauseln, um zu sehen, ob sie sich daran gewöhnen.

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;
    ...
}

Wenn Sie also eine URL wie http://www.example.com/index.php besuchen, wird beim Besuch von http://www.example.com/img/my-) der letztere Header ausgelöst. ducky.png löst den vorherigen Header aus.

159
yuvilio

Sie können eine einfache Zeichenfolge als HTTP-Antwort zurückgeben:

location /
{
    return 200 $document_root;
}

Beachten Sie, dass Sie eine Seite besuchen müssen, die mit .html Endet, wenn Sie die Kopfzeilen der Seite nicht ändern möchten.

43
Thomas Decaux

Sie können ein benutzerdefiniertes Zugriffsprotokollformat mit log_format Direktive, die die Variablen protokolliert, an denen Sie interessiert sind.

19
mgorven

Eine andere Option besteht darin, das Echo-Modul einzuschließen, wenn Sie nginx erstellen, oder OpenResty zu installieren, das nginx mit einer Reihe von Erweiterungen (wie echo) gebündelt ist.

Dann können Sie Ihre Konfiguration einfach mit folgenden Anweisungen bestreuen:

echo "args: $args"
7
Mark Evans