Speichern des Benutzernamens in Nginx-Protokollen

10

Gibt es eine Möglichkeit, wie Benutzername oder Benutzer-ID in Nginx-Protokollen gespeichert werden können? Ich habe versucht, $ remote_user in die Direktive log_format einzufügen, aber es scheint nicht zu funktionieren.

nishant
quelle

Antworten:

10

Ja, das ist möglich. Da Sie jedoch keine HTTP-Basisauthentifizierung verwenden, muss Ihre Anwendung Nginx den aktuellen Benutzernamen mitteilen. Fügen Sie einen Antwortheader hinzu:

X-Username: nishant

log_formatVerwenden Sie dann in Ihrer Direktive die Variable $sent_http_x_username. Dieses Verhalten ist hier dokumentiert: http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

Ich empfehle außerdem, diesen zusätzlichen Header aus der Antwort zu entfernen, bevor Sie ihn an den Client senden. Sie können dies mit dem NginxHttpHeadersMoreModule tun .

more_clear_headers 'X-Username';
Brad
quelle
Können Sie mir bitte sagen, wie ich einen Antwortheader hinzufügen soll?
Nishant
@nishant Das hängt ganz von deinem Code ab. Sie müssen etwas schreiben oder ändern, was Sie zur Ausgabe des Benutzernamens im Antwortheader benötigen.
Brad
Die Webanwendung basiert auf Django.
Nishant
@nishant Ich habe nichts mit Django geschrieben, daher kann ich Ihnen keine konkreten Ratschläge geben, aber es sieht so aus, als würde es Middleware unterstützen. Ich würde ein Middleware-Modul schreiben, das sich um das Hinzufügen des zusätzlichen Headers kümmert.
Brad