Nginx Logging exclusion help
sandyk007
nginx-forum at nginx.us
Thu Jun 4 16:04:57 MSD 2009
Hi,
I am quite new to NGINx; but have used this for pop proxy; light web-servers & quite fascinated with the results.
Right now facing part as far logging is concerned. I certain
hits in logs; which are just opening connections & dont transmit
anything & close the connection or are disconnected after
time-outs. So some entries of no requests format & error as 408 get
recorded in logs; which makes centralised logging system go hay-wire.
I would like to avoid logging such entries as done in apache;
which does not logs 400 or 408 or any telnet requests w/o passing any
headers.
Some of options tried are as follows (but havent helped) :
## If request not as GET / POST / HEAD request methods
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
Access log:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_cookie" ';
Detailed Logs:
------------------------
89.5.0.243 - - [25/May/2009:14:27:54 +0530] "-" 408 0 "-" "-" "-"
XXX.XXX.XXX.5 - - [25/May/2009:14:26:32 +0530] "GET /health.htm HTTP/1.1" 200 3 "-" "-" "-"
XXX.XXX.XXX.6 - - [25/May/2009:14:26:23 +0530] "GET /health.htm HTTP/1.1" 200 3 "-" "-" "-"
67.161.28.173 - - [25/May/2009:14:26:22 +0530] "-" 400 0 "-" "-" "-"
In order to replicate this scenario; just try telneting to your Nginx server:port & disconnect w/o passing any request of GET/POST; you would have 400 error in logs.
Conf Details:
--------------------------
user nobody;
worker_processes 10;
error_log /var/log/nginx/logs/error_log debug;
pid /var/log/nginx/logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
## Timeouts
client_body_timeout 120;
client_header_timeout 120;
keepalive_timeout 5 5;
send_timeout 5;
## General Options
ignore_invalid_headers on;
limit_zone gulag $binary_remote_addr 1m;
recursive_error_pages on;
sendfile on;
server_name_in_redirect off;
server_tokens off;
## TCP options
tcp_nodelay on;
tcp_nopush on;
## Logging & Formats
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_cookie" ';
server {
listen 8081;
server_tokens off;
server_name metrics.example.com metric.example.com;
access_log /var/log/httpd/logs/example/access_log main;
location / {
root /home/httpd/html/example;
index index.php index.html;
## If request not as GET , HEAD, POST request methods dont log the requests
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
access_log off;
}
if ($host ~ "^(.*)example.com") {
rewrite . /blank.html break;
expires -1;
}
}
}
Any help you would be highly appreciable.
Regards,
Sandesh K
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,2627,2627#msg-2627
More information about the nginx
mailing list