我了解到我正在使用的系统中存在一个错误来生成我的休息界面。如果我对不存在的“域”进行查询,我正在使用的系统将抛出一个未正确处理的异常,ultimatley导致僵尸线程永远不会被回收。
我想通过在代理域请求之前检查域是否存在来防止丢失线程,如果可能的话,所有这些都来自nginx。
我的nginx conf有点复杂。对于相关部分,我有一个我的众多GUI将使用的默认域,但是一些UI必须使用不同的域,如果是,我为它们添加一个单独的位置指令。我的默认域指令看起来像这样:
location ~ ^/UI/[^/]*-api/ {
rewrite ^/UI/[^/]*-api/(.*) /<base_url>/domains/<domain name>/$1 break;
proxy_pass https://<ip>:<port>
proxy_cache UI-CACHE;
}
我已经知道我可以添加一些代理选项以减少代理到后端的请求数量,并且很快就会添加这些选项,所以请随意假设它们存在于您的答案中。
我想要做的是在我使用该域代理任何位置请求之前添加一种方法来检查域是否存在。理想情况下,如果我收到/ UI / foo-api / application /的请求,我想首先查询// domains / check是否在结果中列出,并且仅在请求时代理请求。如果我没有看到域名,我想返回一个合适的错误代码。
更准确地说,延迟太高,无法检查每个请求是否存在域。相反,我想将检查缓存到//域/ X秒。如果我可以以某种方式使代理请求收到错误消息,则相同API的下一个代理将检查域是否存在,即使最后一个缓存域检查未到期,这将是有用的。
在理想的世界中,我希望能够编写适用于任何域的指令,这意味着如果用户稍后为/ ui / bar-api /和/ ui / baz-api添加特定位置/使用不同的域名,我编写的用于检查域名存在的逻辑将自动应用于检查相应调用存在的bar-domain或baz-domain,而无需向location指令添加任何其他逻辑,尽管这可能太多了请求。
nginx中是否有任何方法可以让我这样做?