设置虚拟主机文件以托管来自远程服务器的源代码
Posted
技术标签:
【中文标题】设置虚拟主机文件以托管来自远程服务器的源代码【英文标题】:Setup virtual hosts file to host the source code from remote server 【发布时间】:2013-03-13 23:20:34 【问题描述】:非常感谢您对以下查询的支持
现状:
我在 Linux Apache 服务器“A”上有一个 Web 应用程序(包含一个上传文档的模块),它只能通过 Intranet 进行 HTTP-ed。
必填:
需要另一台 Linux Apache 服务器“B”来托管相同的 Web 应用程序,同时仅在服务器“A”上维护源代码。服务器“B”可以通过 Internet 和 Intranet 进行 HTTP-ed。
阻塞点:
在当前情况下,我们无法直接在服务器“B”上托管网站(这似乎是合乎逻辑的解决方案)。
问题:
是否可以为这种要求设置 httpd.conf 文件的虚拟主机?
研究:
通常我的大部分发现都是关于部署负载共享/负载平衡解决方案的帖子(不是我的目标),或者在“A”和“B”之间设置双向同步过程(最后的解决方案)。
谷歌搜索的字符串:
在两台服务器之间共享网站,在两台服务器上托管网站,虚拟主机到另一台服务器,在多台服务器上运行单个网站设置,网站虚拟主机在另一台服务器上,在两台不同的服务器上托管网站,设置两个linux 服务器托管同一网站
服务器详情:
服务器 A:
服务器IP:192.168.xxx.xxx(只能通过内网访问)
托管网站源代码
Apache 服务器
操作系统:RHEL5
服务器 B:
可通过 Intranet 和 Internet 访问
Apache 服务器
操作系统:与 A (RHEL5) 相同
【问题讨论】:
你看过ProxyPass
指令吗?
我在论坛上看到使用代理指令会导致安全漏洞...我不确定这是否属实...
我会阅读更多关于 ProxyPass 指令的内容。据我了解,我还需要 ProxyPassReverse
非常感谢...它可以工作,虽然它确实破坏了我的JS,但我现在知道我必须调整参数,因为请求没有正确发送...仍然关心是否有由于此解决方案,确实是一个安全漏洞
如何将此帖子标记为已回答?
【参考方案1】:
总结一下您现在可能发现的问题:不幸的是,有两件事称为代理。您感兴趣的称为反向代理,B 将在其中接受请求并将它们转发给 A。客户端永远不会看到 A 甚至存在。几乎没有安全问题,具体取决于您查看的安全角度:
服务器 A 只看到来自 B 的请求,而不是原始客户端,因此您需要在服务器 B 上配置任何基于 IP 的限制。
通常提到的安全问题是 (forward) 代理会代表客户端向任意服务器请求事物,因此它会掩盖客户端的身份。我认为您无需担心这一点,只要您将ProxyRequests Off
禁用转发代理即可。
服务器 A 可能会意外泄露其 IP,您可能对此感到不舒服。当 B 将其从 A 接收到的客户端请求的答案传递回时,它不会查看有效负载。因此,如果您返回 html 文档,它们最好都只有相对路径。我认为这可能是您遇到的问题:如果您的代码仍然包含对 192.168.x.y 的引用,那么这些对外部客户端不起作用。如果您正在更改路径(即您有类似 ProxyPass /somepath http://internal-server/otherpath
的内容),事情会变得更加复杂,因此请尽量避免这种情况。 (一般来说,您的后端应用程序需要了解其公开可见的 URI 是什么。如何做到这一点取决于应用程序。)
【讨论】:
你是一个救生员。非常感谢以上是关于设置虚拟主机文件以托管来自远程服务器的源代码的主要内容,如果未能解决你的问题,请参考以下文章
在使用 Owin 自托管的 Web API 中获取远程主机 IP