2011-03-02 38 views
0

我确定有一个简单的解决方案 - 但我已经用我的头撞了Apache文档,看起来像是永远......也许有人可以给我有提示吗?Apache配置将多个仅限本地的http站点作为单个公共https站点提供

在局域网上,我有多个网站(我们应该假设它们有不透明的实现),每个网站都在不同的域下运行......并且这些工作都很好。

我想通过https公开这些网站,但我只能访问一个合适的IP地址 - 使得将/ app1 /路径映射到具有app1主机名的内部网站并且路径为/ app2 /到一个app2主机名的内部网站 - 这是我的目标。

我试着玩“Apache模块mod_proxy” - 我尝试过ProxyPass,ProxyPassReverse和部分的各种组合 - 所有这些都带有相同的问题。 http://app1.example.com/的网站包含引用“/submit.php”和“/base.css”形式的uris的页面,它们可以相对于多个http站点方案工作,但在公共https方案中是错误的,是多个根 - 由公共URI中路径的前缀标识。

什么是确保这些URI被正确转换的最佳方式? mod_proxy是否适合这类任务?

回答

0

您需要SNI,服务器名称标识。

你想达到的目标无法靠Web服务器自己实现,它需要客户端很好,只有在发送域名后才启动加密会话,否则不可能。

这是一个教程,techrepublic,祝你好运。

+0

我(强烈)怀疑有误解。我曾希望包括URIS来说明 - 但stackoverflow.com阻止我这样做。我内部有http://app1.example.com和http://app2.example.com网站。我想把它们公开为https://ssl.example.com/app1和https://ssl.example.com/app2。这完全是关于URI翻译 - Web服务器*绝对可以做到 - 原则上......不幸的是,我不知道魔术配置语法。 – aSteve 2011-03-02 23:24:05

0

在情况下,它可以帮助其他人...

我的最终解决方案是使用mod_proxy的反弹从SSL服务器请求我的内部服务器...但是,由于种种原因,原来是远在内部服务器托管的单独阶段更容易翻译URI。我使用mod_rewrite去除路径前缀 - 并且它很有魅力。

很遗憾,在SSL服务器的配置中没有明显的方法来做到这一点(请纠正我,如果我只是忽略了它),我浪费了很多时间追求mod_html_proxy - 这是相当严格的关于它会翻译的html。无论如何,最好在Apache中翻译选定的URI,而不是让Apache翻译整个文档。