Nginx根据上游响应代码返回444

我有nginx安装程序传递到上游使用代理传递。 上游写入返回502 http响应对某些请求,而不是返回502与所有标题我想nginx recoginse这个并返回444,所以没有返回。 这可能吗?

我也尝试在任何50x错误上返回444,但是它也不起作用。

location / { return 444; } location ^~ /service/v1/ { proxy_pass http://127.0.0.1:3333; proxy_next_upstream error timeout http_502; error_page 500 502 503 504 /50x.html; } location = /50x.html { return 444; } error_page 404 /404.html; location = /404.html { return 444; } 

如果后端实际上返回了502,并且它不是由nginx在内部生成的,因为后端不可访问,那么您需要打开proxy_intercept_errors以使error_page指令生效。

对的,这是可能的。 根据error_page的文档,可以这样做…

error_page 500 502 503 504 =444 /50x.html;

以同样的方式

error_page 404 =444 /404.html;

所以,你的整个样本configuration将变成…

 位置 / {
    返回444;
 }

位置^〜/ service / v1 / {
     proxy_pass http://127.0.0.1:3333;
     proxy_next_upstream错误超时http_502;
     error_page 500 502 503 504 = 444 / 50x.html;
 }

 error_page 404 = 444 / 404.html;