Apache 可以根据 URL 重写请求的 Host 标头吗?

sh-*_*eta 2 mod-rewrite apache-2.2

Apache 是我的应用程序的反向代理。客户要求http://cdn.example.com/foo/images/logo.png

GET /foo/images/logo.png HTTP/1.1
Host: cdn.example.com
Run Code Online (Sandbox Code Playgroud)

我希望 Apache 修改请求,以便反向代理另一端的应用程序以以下格式接收它http://foo.example.com/images/logo.png

GET /images/logo.png HTTP/1.1
Host: foo.example.com
Run Code Online (Sandbox Code Playgroud)

重写 URL 很容易,但我还没有找到一种方法来使用从 URL 中提取的值来修改 Host 标头。这可能吗?

vor*_*aq7 5

是的,您可以根据 URI 更改标头。虽然它很丑 - 这是我所知道的唯一方法:

  1. 使用SetEnvIF如果URI匹配您要重写如何设置环境变量。

  2. 如果设置了该环境变量,请使用mod_headers 'RequestHeader指令重置相应的请求标头 ( Host:)。