我想存储除" /"以外的任何uri的访问日志。对于特定的服务器。但是,由于根uri频繁ping,我不想禁用该uri的日志记录。我使用的是nginx 1.10.3。相关配置是:
http {
access_log /var/log/nginx/access.log;
}
server {
access_log off;
location ~ ^/$ {
access_log /var/log/nginx/example_com_access.log combined;
}
}
我尝试了几种access_log参数配置。例如,
我尝试的所有内容似乎都记录了每个请求,或者没有记录对服务器的请求。任何想法如何实现这一目标?
答案 0 :(得分:1)
试试这个:
http {
access_log off;
}
server {
location ~ ^/$ {
access_log /var/log/nginx/example_com_access.log combined;
}
}
它只会记录location ~^/$
的请求,并暗示您需要按location
或server
块添加access_log
其他选项可能是:
http {
access_log on;
}
server {
access_log off;
location ~ ^/$ {
access_log /var/log/nginx/example_com_access.log combined;
}
}
答案 1 :(得分:1)
根据http://nginx.org/r/access_log,您实际上可以在某个位置的access_log
语句中使用if
指令。此外,您可以直接在if
指令中使用access_log
条件参数,从nginx 1.7.0开始。
实现此目标的最佳方法可能是在nginx 1.7.0及更高版本中使用map
和if
access_log
参数:
map $uri $loggable {
/ 0;
default 1;
}
access_log /path/to/access.log combined if=$loggable;
否则,根据您的配置,您可能会假设多个location
指令可以应用于给定请求,而不是这种情况 - 只有一个{{1可以匹配给定的请求。
最好的方法是:
location