如何在nginx中禁用非法主机头请求的日志记录
在我的nginx.conf中,我添加了以下代码来拒绝非法请求:如何在nginx中禁用非法主机头请求的日志记录,nginx,logging,Nginx,Logging,在我的nginx.conf中,我添加了以下代码来拒绝非法请求: server { ... ## Deny illegal Host headers if ($host !~* ^(www.mydomain.com|xxx.xxx.xxx.xxx)$) { return 444; } ... } 但这个请求信息总是写在访问日志中,我认为这是监控请求,因为它们太多了,来自两个不安全的站点,只是头请求 那么,如何停止记录这些非法请求信息以访问日志呢 谢谢。发
server {
...
## Deny illegal Host headers
if ($host !~* ^(www.mydomain.com|xxx.xxx.xxx.xxx)$) {
return 444;
}
...
}
但这个请求信息总是写在访问日志中,我认为这是监控请求,因为它们太多了,来自两个不安全的站点,只是头请求
那么,如何停止记录这些非法请求信息以访问日志呢
谢谢。发现nginx(1.7.0及更高版本)log moude提供了,感到非常羞愧,文档示例只是状态条件: if参数(1.7.0)启用条件日志记录。如果条件的计算结果为“0”或空字符串,则不会记录请求。在以下示例中,将不记录响应代码为2xx和3xx的请求:
map $status $loggable {
~^[23] 0;
default 1;
}
access_log /path/to/access.log combined if=$loggable;
答案中也提到了这个信息。我只是忽略了它
现在,我将以下代码添加到nginx日志设置中:
map $status $loggable {
~444 0;
default 1;
}
access_log /var/log/nginx/access.log combined if=$loggable;
未记录非法主机头请求。您应该使用单独的服务器块
server {
listen 80;
# valid host names
server_name www.example.com;
server_name xx.xx.xx.xx;
# you site goes here
}
# requests with all other hostnames will be caught by this server block
server {
listen 80 default_server;
access_log off;
return 444;
}
这将是简单而有效的我尝试了您的解决方案,我认为它对于不使用条件语句和正则表达式匹配是简单而有效的。谢谢