【问题标题】:Nginx: proxy_intercept_errors - get response bodyNginx:proxy_intercept_errors - 获取响应正文
【发布时间】:2020-07-14 21:27:54
【问题描述】:

我有一个要求,当代理响应错误代码为 401(条件 #1)且响应正文包含文本“无 SAML 令牌”(条件 #2)时,我需要拦截它并重定向到刷新令牌 API。

在只考虑错误代码 401 的情况下,我可以部分执行此操作。无法找到一种方法来读取响应正文以提供 条件 #2

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;
}

请帮助我获取响应正文。提前致谢!

【问题讨论】:

    标签: nginx nginx-reverse-proxy nginx-location nginx-config


    【解决方案1】:

    从 Nginx 论坛得到答案。

    "没办法,根据响应截取错误 标头,并且不从上游读取响应正文 服务器如果错误被拦截。 如果需要分析响应体,可以考虑使用njs 反而。做适当的子请求并调查它可能 为您工作,请参阅此处了解详细信息: http://nginx.org/en/docs/http/ngx_http_js_module.html http://nginx.org/en/docs/njs/reference.html#subrequest"

    https://forum.nginx.org/read.php?2,288683,288689#msg-288689

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 2019-06-23
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2018-02-03
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多