在 nginx 上检查谁在访问我的网站

在 nginx 上检查谁在访问我的网站

我并不真的想知道这件事,因为我想把它保密,并尽可能地保护我的访客的隐私(尽管我的博客并不受欢迎)。

我刚刚安装了 Ubuntu 和 Digital Ocean 的 nginx,预装了,但之前我用的是 Wordpress。现在(在我写这篇文章的时候)我一直看到这个日志

POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 3ms - 19b
POST /wp-admin/admin-ajax.php 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 3ms - 19b
GET /winBid?erid=EzLM7nyV0n&eid=2&cpm=1.45449&bid=1628&w=1384697998 301 2ms
POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 3ms - 19b
POST /bidRequest?exchange=smaato 500 2ms - 19b

正如您所看到的,它每分每秒都在发生,而且他们从未停止过,我在想他们是不是在我使用 Wordpress 时试图入侵我的网站,或者这些请求是否造成了一些问题。如果发生了一些不好的事情,我想了解这些攻击并阻止他们的 IP。我该如何发现,或者我应该在我的盒子里安装某种模块/插件来防止这种行为?

答案1

日志通常可以打开并设置路径nginx.conf /etc/nginx/nginx.conf

如果您vim使用编辑器并编辑该文件并更改或检查此行

access_log  /var/log/nginx/access.log  main;

答案2

NGINX 能够记录 IP 和其他您可能感兴趣的信息,但您在此处显示的日志似乎未配置为包含该信息。如果您调整 nginx 日志,您应该能够启用它。如果您需要帮助,请在此处发布您的 nginx 日志配置。我的配置如下:

    log_format main
            '$remote_addr - $remote_user [$time_local] '
            '"$request" $status $bytes_sent '
            '"$http_referer" "$http_user_agent" '
            '"$gzip_ratio"';

并在日志中记录如下内容:

76.113.215.212 - - [17/Nov/2013:10:19:19 -0600] "GET / HTTP/1.1" 200 15411 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/31.0.1650.57 Safari/537.36"

一旦找到有问题的 IP,您就应该能够通过多种方式阻止它们 - 最有效的方式可能是作为防火墙 (iptables) 的一部分,或者,如果可以接受在重新启动之前暂时阻止,则可以使用 REJECT 路由条目,这基本上会使您的计算机完全拒绝与该主机通信。如果您认为这有点过分,您可以制定规则以通过各种方式在 nginx 中阻止它们(想到了速率限制)。

答案3

如果你的 Web 服务器位于负载均衡器(如 Amazon ELB)后面,则 $remote_addr 将不是为您提供客户端IP。相反,您的每个条目将是上游负载平衡设备的IP。

为了解决这个问题,用 $http_x_forwarded_for 替换 $remote_addr:

log_format 主要
'$http_x_forwarded_for - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" ';

相关内容