Değişken hata ayıklama için nginx günlüğünde nasıl çıktı


83

Nginx'i test ediyorum ve değişkenleri günlük dosyalarına vermek istiyorum. Bunu nasıl yapabilirim ve hangi günlük dosyasına gidecektir (erişim veya hata).

Yanıtlar:


143

Nginx değişken değerlerini başlıklar üzerinden gönderebilirsiniz. Geliştirme için kullanışlı.

add_header X-uri "$uri";

ve tarayıcınızın yanıt başlıklarında göreceksiniz:

X-uri:/index.php

Bunu bazen yerel kalkınma sırasında yapıyorum.

Ayrıca bir alt bölümün yürütülüp yürütülmediğini size bildirmek için kullanışlıdır. Sadece kullanılıp kullanılmadıklarını görmek için maddelerinize serpin.

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

Bu nedenle, http://www.example.com/index.php gibi bir URL adresini ziyaret etmek , sonraki başlığı tetiklerken, http://www.example.com/img/my-ducky.png adresini ziyaret ederken önceki başlığı tetikler.


29
Yalnızca başarılı isteklerdeadd_header işe yarayacağını unutmayın . Dokümantasyon, yalnızca 200, 204, 301, 302 veya 304 kodlu yanıtlara uygulanabileceğini belirtir. Bu nedenle, HTTP hatalarını ayıklamak için kullanılamaz.
John WH Smith

31
@JohnWHSmith: marat belirtildiği gibi bu cevap . İtibariyle sürümü 1.7.5 , nginx eklenen bir "her zaman" parametresi için add_headerne olursa olsun yanıt kodu, başlık dönecektir hangi. Örneğin, add_header X-debug-message "A php file was used" always;500 hata kodu için bile çalışmalı.
yuvilio

6
Bu, soruya hiç cevap vermiyor. Adam istemciye değil de dosyaya giriş yapmak istiyor .
Avamander

37

Basit bir dize HTTP yanıtı olarak döndürebilirsiniz:

location /
{
    return 200 $document_root;
}

1
Ya iki değişkenli değerleri döndürmek istersen?
BringBackCommodore64

Konuma gitmek hemen tarayıcımın Farklı Kaydet iletişim kutusunu açar (Opera, Chromium'da test edilmiştir). Hiçbir cevap yok.
BringBackCommodore64 16:18

@ BringBackCommodore64 Bir metin / html Content-Type başlığı eklemek yardımcı olabilir.
bitwise

Postacı kullanarak , bu herhangi bir ek başlık olmadan çalışır. Teşekkürler!
aexl

19

log_formatİlgilendiğiniz değişkenleri kaydeden yönergeyi kullanarak özel bir giriş günlüğü formatı belirleyebilirsiniz .


2
teşekkürler ve sanırım bir değişkeni tek başına çıkarmanın daha kolay bir yolu yok mu?
lulalala

@lulalala Bildiğim kadarıyla değil.
mgorven

Yönergede log seviyesini ayarlamak mümkündür error_log, debugböylece değişkenlerin ve yürütülen blokun değerini görebilirsiniz. Örnekerror_log file.log debug
Victor Aguilar

1
boş değişkenlerin -kayıt defterinde olduğu gibi gösterildiğini , ancak nginx kodunda gerçekten boş olduklarını -, herhangi bir zamanda kontrol etmemelisiniz . Bu bazen kullanıcıları şaşırtıyor.
higuita

6

Başka bir seçenek, nginx oluştururken eko modülünü dahil etmek veya bir sürü uzantıyla (echo gibi) paketlenmiş nginx olan OpenResty'yi yüklemektir .

Daha sonra yapılandırmanızı şunun gibi ifadelerle serpebilirsiniz:

echo "args: $args"

2
Bunu denediğimde, gerçek sayfanın çıktısını kesen, sunucudaki düz bir metin dosyasına eko yapıyor.
JaredMcAteer

echo_logKalkınmada bir yönerge var .
Gajus,
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.