Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使nginx在有';这是一个502错误_Nginx_Webserver_Devops_Production Environment_Reliability - Fatal编程技术网

如何使nginx在有';这是一个502错误

如何使nginx在有';这是一个502错误,nginx,webserver,devops,production-environment,reliability,Nginx,Webserver,Devops,Production Environment,Reliability,这就是我要做的。每当nginx返回一个502时,我们都希望它向仪表板发送一条带有返回502的url路径的消息 然后在我们的仪表板中,我们将按降序显示返回502的URL及其各自的计数 例如: +--------------+-------+ | url | count | +--------------+-------+ | /foo/bar | 45 | | /foo/bar/123 | 23 | | /foo/bar/baz | 12 | +----

这就是我要做的。每当nginx返回一个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;
}
这样,在这个特殊的日志文件中只会得到502,因此相对于完整的日志监控来说,开销将很低。您还需要使用日志格式来获得初始页面的正确表示

另外,如果使用代理(我想你是这样做的),请确保

proxy_intercept_errors on;
为了让它发挥作用


希望这能有所帮助,但可能有人有一个更好的解决方案,而不使用日志。

我通常会使用日志监控解决方案来解决这个问题,您想将其挂接到nginx本身有什么具体原因吗?@taleodor在避免使用日志监控解决方案,我只是想要一个标题,而不是查询logife,因为它不便宜,然而,如果您使用json化的日志,那么监控开销并没有那么糟糕。我不知道nginx方面有什么好的解决方案-也许有人会分享。只是更新了答案,在;-这一个很容易忘记(几天前我刚刚建立了smth)。