logging - 将 NGINX 中的 403 错误重定向为 null 或静默

标签 logging nginx error-handling

我没有在网上找到这方面的帮助,也没有找到我需要做的事情的文档……这个问题是一个几乎和问题一样多的解决方案。现在我需要一个解决方案。任何关于如何控制 nginx 错误输出的文档的答案或链接都会很棒。

初步解决方案及情况:
我有一个 PCI 安全网络服务器。对它的攻击是家常便饭。一切都很好,处理负载低,日志文件只有 30-40MB,直到 OpenVAS 在网络上发布。

然后我的服务器流量激增,nginx 使用率上升了 400%,PHP 后端使用率上升了 5000%。日志跃升至 130+MB。这一增长完全是许多新的 IPS 使用新工具包探测盒子的结果。它淹没了后端,我不得不用一些激烈的东西来回应......

现在 cron 会定期检查日志;任何 IP 在一小时内请求 >X00 个请求、请求已知的 URL hack 或其他逻辑;被添加到阻止列表并重新加载 nginx 以消除攻击。在此之后,大多数事情都恢复了正常。

新问题:

我需要帮助,是 nginx 如何处理拒绝。

当我过去查看我的错误日志时,我发现了 10-100 行错误或通知,我需要查看、更正并向上推以保持盒子的安全和整洁。

然而,Nginx 认为每次拒绝都是一个错误……我的每周错误日志现在是 300,000 行:

2015/11/15 23:01:30 [error] 22040#0: *432212 access forbidden by rule, client: z.z.z.z, server: secure.mydomain.com, request: "GET /cadcd01153160add.aspx HTTP/1.1", host: "x.x.x.x"

有 100 行错误,我需要解决其中的一些问题......

是的,我可以过滤掉它们,但是这个函数现在将访问日志中的条目复制到错误日志中,因此原来的 35MB 访问 + 100 个错误行日志现在定期为 270MB。如果这种情况继续下去,我可能需要为日志获取单独的驱动器! (因为攻击正在增加)所以单个盒子可以处理负载并阻止攻击,但造成了日志文件大小限制的致命弱点。

如何将“403”抑制或重定向为不是错误并防止它淹没日志文件,以便我可以减少重复条目、日志大小(错误日志)并更轻松地执行我的例程?

最佳答案

我们在创建 CMS Effcore 时遇到了这样的问题。决定使用结构“deny all; error_log off;”。其应用示例如下所示。

server {
  listen 127.0.0.1:80;
  server_name 127.0.0.1;
# block access to "web.config"
  location ~ /web.config$ {deny all; error_log off;}
# block access to ".htaccess", ".git" and etc.
  location ~ /\. {deny all; error_log off;}
# single entry point to index.php?q={REQUEST_URI}
  location / {
    root %%_root;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    include %%_include;
    fastcgi_param SCRIPT_NAME /index.php;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
  }
}

关于logging - 将 NGINX 中的 403 错误重定向为 null 或静默,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33791122/

相关文章:

nginx - Meteor - "ROOT_URL"的目的是什么,应该定义什么?

c# - 如何开始使用 ReflectInsight?

android - 如何以简单的方式将 shell 脚本输出重定向到 Logcat

node.js - Cors nginx 和 nodejs

jsp - 如何隐藏/更改浏览器地址栏上的 jsp 扩展名?

asp.net - 避免在我的Telerik控件中尝试/捕获 hell

jsp - 缺少 Action 错误,但是仍然有效。怎么样?

r - 在R中带有警告的函数中抑制,记录和返回值

c++ - 消除类模板中基类名称的歧义

logging - Neo4j 3.x 非托管扩展 slf4j 问题