Nginx:proxy\u intercept\u错误-获取响应正文
我有一个要求,当代理响应错误代码为401(条件#1)且响应正文有文本“无SAML令牌”(条件#2)时,我需要截获它并重定向到刷新令牌API 在只考虑错误代码401的情况下,我可以部分地这样做。无法找到读取响应正文文本的方法以给出条件#2:Nginx:proxy\u intercept\u错误-获取响应正文,nginx,nginx-reverse-proxy,nginx-location,nginx-config,Nginx,Nginx Reverse Proxy,Nginx Location,Nginx Config,我有一个要求,当代理响应错误代码为401(条件#1)且响应正文有文本“无SAML令牌”(条件#2)时,我需要截获它并重定向到刷新令牌API 在只考虑错误代码401的情况下,我可以部分地这样做。无法找到读取响应正文文本的方法以给出条件#2: 请帮助我获取回复正文。提前谢谢 从Nginx论坛得到了答案 “不可能。错误是根据响应截获的 标头,并且不会从上游读取响应主体 如果错误被截获,则返回服务器。 如果需要分析响应体,请考虑使用NJS。 相反,执行适当的子请求并研究它可能会 为您工作,请参见此处了解
请帮助我获取回复正文。提前谢谢 从Nginx论坛得到了答案 “不可能。错误是根据响应截获的 标头,并且不会从上游读取响应主体 如果错误被截获,则返回服务器。 如果需要分析响应体,请考虑使用NJS。 相反,执行适当的子请求并研究它可能会 为您工作,请参见此处了解详细信息:
从Nginx论坛得到了答案 “不可能。根据响应截获错误 标头,并且不会从上游读取响应主体 如果错误被截获,则返回服务器。 如果需要分析响应体,请考虑使用NJS。 相反执行适当的子请求并研究它可能会 为您工作,请参见此处了解详细信息:
location /service {
proxy_intercept_errors on;
error_page 401 = @refresh;
}
location @refresh {
(# Here check if the response body has text "No SAML Token". If yes return 401 directly.)
set $original_uri $scheme://$http_host$request_uri;
return 307 https://localhost:8083/service/auth/refresh?uri=$original_uri;
}