希望你们能帮助我解决我遇到的代理问题。
我已经拥有的
我已经设置了一个 apache http 反向代理,将来自 *.proxy.domain 的请求代理到 *.intern.domain。apache 是从外部网络访问我的内部 Web 应用程序的唯一方法。
例子:
app.proxy.domain -> app.intern.domain
mail.proxy.domain -> mail.intern.domain
这一切都很好,但我有以下问题。
问题
我想代理以下请求:
app.proxy.domain -> app.internal.domain
app-dev.proxy.domain -> app-dev.internal.domain
这没问题,但不幸的是,app-dev 服务器运行的是应用服务器 web 应用程序的精确副本,而这个 web 应用程序只响应它的主机名 (app.intern.domain)
所以我需要做的是代理以下
app.proxy.domain -> app.internal.domain (10.0.1.1)
app-dev.proxy.domain -> app.internal.domain (10.0.1.2)
我可以做第二件事,在 /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/
但将 app.intern.domain 作为主机名发送?
编辑 dev-servers 网络应用程序以收听 app-dev 是没有选择的,因为它应该是一个精确的副本(不是我的决定......)
谢谢!
可能您可以将 mod_headers 与 mod_proxy 结合使用。不过我还没有测试过。
因此,对于您的 app-dev 虚拟主机,您可以拥有:
然后你会添加:
丑陋的解决方法是使用(而不是:滥用)/etc/hosts 将 app.internal.domain 指向 localhost,然后将 Apache 配置为监听两个额外的端口,一个用于您的应用程序和 app-dev。所以反向代理两次:
添加到反向代理的配置(foe app-dev.proxy..):
您必须事先启用 mod_headers:
内部服务器 10.0.1.2 应该有