Nginx'te erişim günlüklerinden get parametrelerini gizle


5

Hizmetimizle ilgili istatistikleri görmek için erişim günlüğünü etkinleştirmek istiyorum, sorunum erişim günlükleri biçimindeki $ isteğinin tüm GET parametrelerini kaydetmesi (isteğin bir parçası olduğu için mantıklı) olması.

ancak bu bilgiyi gizlemek istiyorum, bu nedenle bunu günlüklerde görmek yerine:

98.207.174.147 - - [26/Apr/2014:23:59:09 +0000] "GET /v1/api.json?parameter1=value1&paramter2=value2" HTTP/1.1" 200 13449 "-" "httperf/0.9.0"

görmek isterim

98.207.174.147 - - [26/Apr/2014:23:59:09 +0000] "GET /v1/api.json" HTTP/1.1" 200 13449 "-" "httperf/0.9.0"

1
POST isteklerini kullanın.
Michael Hampton,

Onun sadece karşılaştırma için, hizmetimiz maalesef o :( benim için bir seçenek değil, kullanıcıların arama olsa istekleri GET çalışmasına izin vermelidir
rorra

Yanıtlar:


10

log_formatDirektifini kullanabilirsiniz ngx_http_log_module.

örneğin, bu biçim sadece uri'yi herhangi bir sorgu dizesi olmadan gösterecektir:

http {
       log_format combined_no_query '$remote_addr - $remote_user [$time_local] '
           '"$uri" $status $body_bytes_sent '
           '"$http_referer" "$http_user_agent"';
       //other configs ...
     }

 server {
       access_log /var/log/nginx/access.log combined_no_query
       //... 
      }

$uriHerhangi bir sorgu dizesi olmadan sadece uri'yi kaydetmek için kullanılan değişkene dikkat edin .

log_formatYönerge için doc : http://nginx.org/en/docs/http/ngx_http_log_module.html

daha fazla değişken için: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_uri


Çok teşekkür ederim, aradığım çözüm
buydu

Lütfen istek yöntemini (GET / POST vb.) '"$request_method $uri" $status $body_bytes_sent '
Kaçırdığınızı
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.