我已将 apache 设置为反向代理。当上游服务出现错误(例如 500)时,该错误不会返回给客户端,而是 apache 提供 502“从远程服务器读取时出错”。
我希望将原始错误返回给客户端。
注意:当上游服务正常运行(200 OK)时,apache 会按预期返回响应。500 响应被屏蔽了。
直接调用上游服务即可返回正确的 500 响应和内容,没有任何问题。
这就是我们现在所拥有的:
ProxyPass "/path" "http://host:port/path"
ProxyPassReverse "/path" "http://host:port/path"
服务返回 500 时的响应
Bad Gateway!
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /path/to/resource.
Reason: Error reading from remote server
If you think this is a server error, please contact the webmaster.
Error 502
publichostname
Apache/2.4.6 (Linux/SUSE)
是否存在一些 apache 配置更改,使得 apache 能够转发原始响应,而不管状态代码如何?
答案1
您至少需要安装 2.4.16。
此行为是您所用版本的一个错误,已在 2.4.13 中修复(未发布)
*) mod_proxy:除非配置了 failonstatus,否则不要将工作程序置于后端返回的 500 或 503 错误状态。PR 56925。[Yann Ylavic]