
Ich lese einige Nginx-Protokolle für einige ziemlich lang andauernde Anfragen (bis zu 10 Sekunden). Im Protokollformat verwenden wir die $time_local
Variable, um die Zeit aufzuzeichnen. Aber ist damit die Zeit gemeint, zu der die Anfragegestartetoder wenn esfertig? Für eine lang andauernde Anfrage sind das ziemlich unterschiedliche Zeiten, und ich kann nichts finden in derngx_http_log_module-Dokumentationum dies zu erklären.
Antwort1
Die $time_local
Variable enthält den Zeitpunkt wann der Logeintrag geschrieben wird.
Wenn der HTTP-Anforderungsheader gelesen wird, führt nginx eine Suche nach der zugehörigen virtuellen Serverkonfiguration durch. Wenn der virtuelle Server gefunden wird, durchläuft die Anforderung sechs Phasen:
- Server-Neuschreibphase
- Standortphase
- Phase des Standortumschreibens (die die Anfrage in die vorherige Phase zurückbringen kann)
- Zugangskontrollphase
- try_files-Phase
- Log-Phase
Da die Protokollphase die letzte ist, $time_local
liegt die Variable viel näher am Ende der Anfrage als an ihrem Anfang.