首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在nginx中禁用非法主机头请求的日志记录

如何在nginx中禁用非法主机头请求的日志记录
EN

Stack Overflow用户
提问于 2017-04-07 06:33:10
回答 2查看 1.3K关注 0票数 1

在我的nginx.conf中,我添加了以下代码来拒绝非法请求:

代码语言:javascript
复制
server {
   ...
   ## Deny illegal Host headers
   if ($host !~* ^(www.mydomain.com|xxx.xxx.xxx.xxx)$) {
      return 444;
   }
   ...
}

但是这个请求信息总是写在访问日志中,我认为这是监视器请求,因为它们太多了,来自两个不安全的站点,而且仅仅是HEAD请求。

那么,如何停止记录这些非法请求信息以访问日志呢?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-07 08:08:26

您应该使用单独的服务器块。

代码语言:javascript
复制
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;
}

那将是简单而有效的

票数 2
EN

Stack Overflow用户

发布于 2017-04-07 07:51:44

很遗憾地发现,nginx(1.7.0及更高版本)日志鼠标提供了条件测井,而文档示例只是状态条件:

if参数(1.7.0)启用条件日志记录。如果条件计算为“0”或空字符串,则不会记录请求。在下面的示例中,响应代码为2xx和3xx的请求将不会被记录: 映射$status $loggable {^23 0;默认值1;} access_log /path/to/access.log . map组合if=$loggable;

同样,回答在nginx中禁用特定请求的日志记录已经提到了这个信息。我只是忽略了它。

现在我将以下代码添加到nginx日志设置中:

代码语言:javascript
复制
map $status $loggable {
    ~444 0;
    default 1;
}

access_log /var/log/nginx/access.log combined if=$loggable;

非法主机标头请求尚未记录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43271184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档