如何确保我的应用程序出现Socket Timeout错误,而不是来自Nginx的403错误?

时间:2017-02-17 19:06:29

标签: node.js nginx clojure reverse-proxy socket-timeout-exception

我使用NodeJS / HapiJS编写了一个搜索API。我将其设置为在端口40000上运行,然后通过Nginx将其反向代理到端口80。 Nginx在这台机器上什么都不做,除了充当我们在各种端口上运行的许多应用程序的反向代理。

我公司使用API​​查找客户数据。它是高度可配置的,但我们不知道哪种配置会给我们带来最好的结果。所以我在Clojure中写了一个大规模的回归测试。该应用程序在API上发出数百万个请求,测试配置的不同参数。

有时API会不堪重负,因此Clojure代码会获得SocketTimeoutException。没关系。我编写了一些代码来捕获所有SocketTimeoutException并等待一段时间然后重试调用。

以上所有都是伟大的,我们喜欢它。

然而,偶尔,由于来自API的响应缓慢而不是获得SocketTimeoutException,我们反而从Nginx获得403错误。这不酷。我甚至不确定它为什么会发生,尽管我认为Nginx有时会厌倦等待来自API的响应,然后可能会认为应用程序处于脱机状态?虽然在这种情况下我会期望500错误,而不是403.但可能Nginx将一些反向代理视为权限问题?

无论如何,慢响应和SocketTimeoutException对我们来说没什么问题,但Nginx的403错误也不行。如何确保Nginx保持安静,因此我的Clojure应用程序可以不间断地与我的NodeJS应用程序通信?

0 个答案:

没有答案