每当出现 502 错误时,如何使 make nginx 运行 成为脚本

How to make make nginx run a script whenever there's a 502 error

这就是我正在尝试做的事情。每当 nginx returns 502 时,我们希望它向我们的仪表板发送一条消息,其中包含返回 502 的 url 路径。

然后在我们的仪表板中,我们将按降序显示返回 502 的 url 及其各自的计数

示例:

+--------------+-------+
|     url      | count |
+--------------+-------+
| /foo/bar     |    45 |
| /foo/bar/123 |    23 |
| /foo/bar/baz |    12 |
+--------------+-------+

我假设这可以通过 nginx 指令实现,并且只是想知道如何去做。

我也很关心如何处理超载假设我们的服务器出于合法原因超载,这会导致 502 错误激增,我们的仪表板也会出现流量激增。

以下评论,虽然它仍然是日志监控解决方案,但我认为它可能会减轻您对开销的担忧。仍然可能有另一个答案。

主要思想 - 创建一个单独的日志,您将只记录 502 个错误并对此做出反应。

首先,将502错误切换到自己所在的位置。然后为此错误创建位置块(它必须有效)。最后,将其通过管道传输到自己的日志中:

error_page   502  /502.html;
location = /502.html {
    root   /var/www/html;
    access_log  /var/log/nginx/502_error.log  main;
}

这样你只会在这个特殊的日志文件中得到 502s,因此相对于完整的日志监控来说开销会很低。您还需要尝试使用日志格式来正确表示初始页面。

此外,如果使用代理(我想你会这样做),请确保你有

proxy_intercept_errors on;

为了这个工作。

希望这有帮助,但也许有人有更好的解决方案而不使用日志。