nginx access_log yönergesini geçersiz kılma - yinelenen günlük girişleri


17

Ubuntu 14.04 sunucusunda varsayılan nginx paketini kullanıyorum. Bu kullanarak /etc/nginx/nginx.confana yapılandırma olarak, ve daha sonra, yapılandırmaları içerir /etc/nginx/conf.d/*.confve /etc/nginx/sites-enabled/*.

Varsayılan nginx yapılandırmasında erişim günlüğüne oturum açmak için bu yönerge bulunur

access_log /var/log/nginx/access.log;

X-Forwarded-For üstbilgisini eklemek istiyorum, bu yüzden bunu conf.dklasörün içinde yapıyorum :

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

Sahip olduğum sorun o zaman benim access.log dosyası içinde iki kayıt alıyorum - biri başlık bilgisi ve diğeri olmadan.

nginx.confDosyanın üzerine yazabileceğimi biliyorum , ancak mümkünse kaçınmayı tercih ederim. Ayrıca aynı günlük dosyasını ( access.log) kullanmaya devam etmek istiyorum .

Nginx'e önceki yönergeyi geçersiz kılmalarını ve ana nginx.confdosyayı değiştirmeden günlük biçimini değiştirmelerini söylemenin bir yolu var mı ?


Hayır! Sadece nginx.conf'dan kaldırın
Alexey On

1
Bunun için bir bilet açtım; trac.nginx.org/nginx/ticket/1084
cweiske

Yanıtlar:


6

sorunuzun cevabı HAYIR ise, nginx'te herhangi bir düzeyde bir log_format değerini geçersiz kılamazsınız ve aynı düzeyde iken access_log'u kapatmak dışında onu geçersiz kılamazsınız. Ancak, nginx.conf dosyasını değiştirmeden istediğinizi elde edebilirsiniz, ancak bunu {} sunucu düzeyinde yapmanız gerekir.

Buradaki sorun, conf.d / * ifadesinin http_} içinde olduğu ve tam olarak access_log yönergesinin bulunduğu yerdir. Nginx.conf öğesine dokunmadan yapabileceğiniz şey, kullandığınız sunucuyu {} değiştirmektir (eğer bir tane kurmadıysanız / etc / nginx / sites-active / default adresinde bulunan varsayılan sunucuyu kullanıyorsanız). Yani nginx.conf değiştirmeden aynısını elde etmek için conf.d klasöründeki dosyanızı şu şekilde değiştirmeniz gerekir: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log off;

Ve sonra sunucunuzun içine {} koyun: access_log /var/log/nginx/access.log main;

Bu başlangıçta istediğinizi elde etmenizi sağlayacaktır.


Teşekkürler, bu harika çalışıyor. Genellikle zaten bir mainlog_format olması dışında başka bir ad seçmeniz gerekir.
Kutzi
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.