使用 apache 根据代理响应代码添加标头

Ste*_*epp 6 mod-proxy apache-2.2

我使用带有mod_proxy 的Apache 2.2到某些 3rd 方 HTTP 服务器。

由于它不发送任何Cache-Control标头,我想为响应代码 200 添加 1 天,为 404 添加 5 分钟,为任何其他响应代码添加 0。

所以我想:

SetEnvIf HttpResponseCode "200" rc_200
SetEnvIf HttpResponseCode "404" rc_404

Header set "Cache-Control" "private, max-age=0"
Header set "Cache-Control" "public, max-age=86400" env=rc_404
Header set "Cache-Control" "public, max-age=86400" env=rc_200
Run Code Online (Sandbox Code Playgroud)

小智 3

我知道我的答案可能来得太晚了,但是对于任何想要根据条件(更具体地说是根据 HTTP 状态代码的条件)在 HTTP 响应中设置标头的人来说,它可能很有用。

您可以在此处找到此类配置的示例(示例#8):

  1. 为 HTTP 状态代码为 200 的响应附加缓存标头:
    Header append Cache-Control s-maxage=600 "expr=%{REQUEST_STATUS} == 200"

它可以扩展为支持基于请求/响应环境变量的任何条件。

这个例子适用于 Apache httpd v2.4 :我怀疑它不适用于 httpd v2.2...