Frage beste Möglichkeit, nginx Konfigurationsdatei zu debuggen?


Ich habe eine Reihe von Rewrite-Regeln, die ich von Apache zu Nginx portieren muss.

Es ist ein ziemlich schmerzhafter Prozess, weil ich nicht sehen kann, ob meine Rewrite-Regeln und "Wenn" -Bedingungen so funktionieren, wie ich es möchte.

Apache hatte Debugging für sein Rewrite-Modul. Was kann ich für nginx tun?


26
2017-11-21 02:01


Ursprung




Antworten:


Aktivieren rewrite_log:

rewrite_log on;

und setze Debug-Level in error_log Richtlinie:

error_log /var/log/nginx/localhost.error_log notice;

28
2017-11-21 03:12



so nah am Apache;) Ich muss mir unbedingt nginx ansehen - Olivier Pons
Beachten Sie, dass dies für mehr als das Debuggen von Umschreibungen verwendet werden kann. Sie können hinzufügen "DEBUG DEBUG Pause umschreiben;" überall in der Nginx-Konfiguration und sehen, wenn es getroffen wird. Diese Neuschreibezeile bewirkt effektiv nichts (wenn die Position "DEBUG" übereinstimmt, ersetzen Sie sie durch "DEBUG"), außer dass eine zu protokollierende Zeile ausgelöst wird. Sie können technisch sogar Variablen wie folgt ausgeben: "rewrite. * $ Request break;" oder umschreiben. * "'$ http_x_forwarded_for' $ request" break; - Dies führt jedoch dazu, dass die Anforderung fehlschlägt. Es wäre besser, die Variable einem benutzerdefinierten Protokollformat für access_log hinzuzufügen. - Curtis Yallop


Aktivieren Sie die Debugging-UnterstützungSetzen Sie dann die Debug-Ebene in error_log.

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

Jetzt können Sie das Protokoll streichen und Ihre Anfragen senden. Es gibt wahrscheinlich mehr Details als Sie wollen, aber das kann manchmal ein Lebensretter sein.

Oh, und du solltest dir dessen bewusst sein wenn es böse ist, in einem Standortkontext mindestens ...


12
2017-11-21 09:44



notice ist viel besser als debug als die error_level zum Debuggen von Rewrites, weil es viele irrelevante Debug-Informationen niedriger Ebene überspringt (z. B. SSL- oder gzip-Details; 50+ Zeilen pro Anfrage). - Dan Dascalescu