仅从一个内部服务器进行反向代理

仅从一个内部服务器进行反向代理

我已经配置了一个反向代理,并且可以在一台内部服务器(例如我们的邮件服务器)上正常运行。

现在,我想知道是否可以仅为一个服务器/应用程序(在本例中是我们的 Web 内联网)配置反向代理。

我们的问题是 Intranet 调用同一 Intranet 服务器和另一台内部服务器内的另一个应用程序,而我知道发布此资源的唯一方法是在我们的 dmz apache 中为所有应用程序服务器创建反向代理,但我喜欢从我们的 DMZ 反向 apache 仅调用 Intranet,其他应用程序将由 Intranet 服务器调用,而不是反向代理。出于安全原因,我喜欢使用此系统进行配置,并且只允许外部访问一台服务器。

我已经配置了 Debian Squeeze 和 apache 2.2

有可能吗?怎么办?


我将尝试提供更多有关我的环境以及我正在尝试做的事情的信息。

我在 dmz 中有一个服务器,该服务器有一个已发布的 DNS 记录https://intranet.domain.com将 apache 2 配置为本地内联网服务器的反向代理(https://本地 IP/内网/)在dmz apache中配置:

<Proxy /intranet/>
    ProxyHTMLLogVerbose On
    ProxyHTMLURLMap     ttps://local_ip/intranet/ /intranet/
    ProxyHTMLURLMap     / /intranet/
    #
    ProxyPass         ttps://local_ip/intranet/
    ProxyPassReverse  ttps://local_ip/intranet/
</Proxy>

本地内联网服务器上有一些其他应用程序使用相对路径调用 ttps://local_ip/app1 as (/app1) ttps://local_ip/app2 as (/app2) ttps://local_ip/app3 as (/app3) 并且其他应用程序位于其他服务器上并使用绝对路径从内联网服务器调用,例如: ttps://server4/app4 ttps://server5/app5

目前,我可以从外部源(Internet)访问我们的内部网https://intranet.domain.com/intranet/但是如果我想允许访问从内部网服务器调用的其他应用程序,我必须将每个应用程序配置为反向代理,并允许 dmz/反向代理服务器与 local_ip、server4、server5 之间的通信...并且我们希望只允许 dmz/反向代理与 local_ip(内部网服务器)之间的通信,因为其他应用程序只能从内部网调用,并且我们希望限制可以访问不同于内部网服务器的其他服务器的 ip

如果我配置每个应用程序 app4、app5、app1、app2、app3 和 /intranet 为反向代理,这可以工作,但这需要配置所有应用程序为反向代理,并且与 dmz 建立连接

现在有效....

Internet<--->dmz/reverse-proxy<------>https://local_ip/intranet
                              <--------------------->/app1
                              <--------------------->/app2
                              <--------------------->/app3
                              <--------------------------------->https://server4/app4
                              <--------------------------------->https://server5/app5

我喜欢用这种结构来配置:

Internet<--->dmz/reverse-proxy<------>https://local_ip/intranet
                                                         <----->/app1
                                                         <----->/app2
                                                         <----->/app3
                                                         <----->https://server4/app4
                                                         <----->https://server5/app5

这样配置的目的是为了限制外部访问内部服务器的直接访问,只允许通过代理直接访问内网服务器。可以吗?我该怎么做?最后一个问题,当你从内网访问内网或其他内部应用程序时,如何隐藏网址,只显示https://intranet.domain.com作为固定网址?

答案1

如果我理解正确的话,虽然说实话我并不确定我是否理解正确,但你可以。

您没有提到如何进行反向代理,但如果您还没有这样做,我的建议是使用 mod re-write。

假设您有以下内容:名为 private.mydomain.com 的内部服务器,它托管一个应用程序,我们将其称为 myApp,您希望通过面向世界的 Web 服务器向公众提供该应用程序。此应用程序位于http://private.mydomain.com/myapp

您的公共服务器名为 www,并且您希望让应用程序在 www.mydomain.com/myapp 上向全世界开放

你可以在公共服务器上使用 Modrewrite 如下:

RewriteEngine        on
RewriteRule ^/myapp(.*) http://private.mydomain/com/myapp$1 [P,L]

(如果您想要反向代理 HTTPS URL,您还需要SSLProxyEngine On

相关内容