nginx config dosyasında hata ayıklamak için en iyi yol?


37

Apache'den nginx'e aktarmam gereken bir sürü yeniden yazma kuralım var.

Bu oldukça acı verici bir süreç çünkü yeniden yazma kurallarımın ve "if" koşullarının istediğim gibi çalışıp çalışmadığını göremiyorum.

Apache yeniden yazma modülünde hata ayıklama yaptı. Nginx için ne yapabilirim?

Yanıtlar:


37

Etkinleştir rewrite_log:

rewrite_log on;

ve hata ayıklama seviyesini error_logyönergede ayarlayın:

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

Apache'ye çok yakın;) kesinlikle nginx'e bakmak zorundayım
Olivier Pons

Bunun, hata ayıklama yeniden yazma işleminden daha fazlası için kullanılabileceğini unutmayın. "Yeniden yaz DEBUG DEBUG sonu;" İstediğiniz yerde nginx config ve ne zaman vurulacağını görebilirsiniz. Bu yeniden yazma satırı etkin bir şekilde (eğer "DEBUG" konumu eşleşdiyse, onu "DEBUG" ile değiştirin) günlüğe kaydedilecek bir çizgiyi tetiklemekten başka bir şey yapmaz. Teknik olarak şöyle değişkenler bile atayabilirsiniz: "rewrite. * $ Request break;" veya yeniden yazın. * "'$ http_x_forwarded_' '$ request" sonu; - bu isteğin başarısız olmasına neden olsa da. Değişkeni access_log için özel bir günlük biçimine eklemek daha iyi olacaktır.
Curtis Yallop

14

Hata ayıklama desteğini etkinleştirin , ardından error_log'da hata ayıklama düzeyini ayarlayın.

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

Artık günlüğü kaydedebilir ve isteklerinizi iletebilirsiniz. Muhtemelen istediğinden daha fazla ayrıntı var, ama bu bazen cankurtaran olabilir.

Oh, ve eğer kötüyseniz , en azından bir konum bağlamında ...


3
noticehata ayıklama için yeniden yazmaktan çok daha iyidir debug, error_levelçünkü çok sayıda düşük düzey alakasız hata ayıklama bilgisini atlayacaktır (örneğin, SSL veya gzip ayrıntıları; istek başına 50+ satır).
Dan Dascalescu

1

Günlükleri ve ve hata ayıklama için yerleşik desteği kullanmak kesinlikle en makul yoldur. Erken aşamalarda hızlı bir yönlendirme hata ayıklaması yapıyorsanız ve yalnızca 4xx "text" dönüşünü kullanarak tarayıcı / istemci ile etkileşimde bulunmak istiyorsanız ; Direktif ayrıca çok az bir çaba ile istediğiniz cevabı verebilir. Örneğin,

http {
  server {
    listen 80;
    server_name mydomain.net;
    return 404 "mydomain 80 route";
  }

  server {
    listen 80 default_server;
    return 404 "default 80 route";
  }
}

Döndürülen web sayfasındaki metin server, isteğinizin hangi bloğu tetiklediğini size söyleyecektir .

Bu yardımcı olur umarım!
Andres

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.