moh*_*ium 20 reverse-proxy hostname http-headers apache-2.2
希望你们能帮助我解决我遇到的代理问题。
我已经拥有的
我已经设置了一个 apache http 反向代理,将请求从 *.proxy.domain 代理到 *.intern.domain。apache 是从外部网络访问我的内部 web 应用程序的唯一方法。
例子:
app.proxy.domain -> app.intern.domain
mail.proxy.domain -> mail.intern.domain
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我有以下问题。
问题
我想代理以下请求:
app.proxy.domain -> app.internal.domain
app-dev.proxy.domain -> app-dev.internal.domain
Run Code Online (Sandbox Code Playgroud)
这没问题,但不幸的是 app-dev 服务器运行 app 服务器 webapplication 的精确副本,并且这个 webapplication 只响应它的主机名(app.intern.domain)
所以我需要做的是代理以下内容
app.proxy.domain -> app.internal.domain (10.0.1.1)
app-dev.proxy.domain -> app.internal.domain (10.0.1.2)
Run Code Online (Sandbox Code Playgroud)
我可以通过在 /etc/hosts 中添加“10.0.1.2 app.internal.domain”来做第二件事,但这也意味着 app.proxy.domain 将登陆开发服务器。
我正在寻找一个选项,仅在 app-dev.proxy.domain 的 vhost 配置文件中设置 /etc/hosts 条目,以便所有其他 vhost 配置都将仅使用 app.intern.domain 的 DNS。
想法...
有没有办法告诉 apache 配置,
ProxyPass / http://10.0.1.2/
Run Code Online (Sandbox Code Playgroud)
但是发送 app.intern.domain 作为主机名?
编辑 dev-servers 网络应用程序以收听 app-dev 是没有选择的,因为它应该是一个精确的副本(不是我的决定......)
谢谢!
小智 39
也许您可以将 mod_headers 与 mod_proxy 结合使用。不过我还没有测试过。
因此,对于您的 app-dev vhost,您可以拥有:
RequestHeader set Host "app.internal.domain"
Run Code Online (Sandbox Code Playgroud)
然后你会添加:
ProxyPreserveHost On
Run Code Online (Sandbox Code Playgroud)