nginx访问日志GET后面用http://开头

今天检查nginx访问日志的时候发现奇怪的日志

[02/Nov/2017:13:35:46 +0800] "GET http://www.baidu.com/ HTTP/1.1" 200 8672 "http://www.baidu.com" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0" -

截图如下

这里取的只是百度的域名,还有好多其他的域名,这个应该是代理攻击

有没有发现GET后面用http://开头的,正常情况GET后面是用”/”开头,如下面的访问日志

[08/Nov/2017:21:54:15 +0800] "GET /2330.html HTTP/1.1" 200 8419 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" -

这个问题在百度gogole的相关文章比较少,所以现在不清楚目前的处理方法是否正确,如果你要遇到了这个问题,可以尝试一下

目前处理的方法

#nginx中添加下面的配置,主要作用就是没有指定域名的返回444

server {
    server_name _;
    location / { 
        return 444; 
    }
}
server
{

    listen 443 ssl http2;
    server_name www.phpsong.com;
    //...


    #添加代码,主要作用如果域名不是www.phpsong.com的就返回444
    if ($host !~ ^(phpsong.com|www.phpsong.com)$) {
              return 444;
    }

    //...
}

设置之后,发现这种日志不存在了,因为不清楚模拟这种攻击,所以不清楚是否已经解决了,apache的解决方法可以看一下这个文章https://wiki.apache.org/httpd/ProxyAbuse

标签:Nginx 发布于:2019-11-03 03:19:46