这种反向代理配置可行吗

这种反向代理配置可行吗

我将首先尝试描述我遇到的问题。

假设我在本地机器的防火墙后面的两个不同端口上运行两个不同的 http 服务器:

SERVER1: http://localhost:8001
SERVER2: http://localhost:8002

现在我想要做的是通过一个端口公开这两个端口。假设通过端口 80,如下所示:

http://server1.mydomain.com:80
http://server2.mydomain.com:80

要求还在于保留标头,并且客户端和终端服务器不会意识到中间的代理。因此,如果终端服务器上存在摘要式身份验证,我预计它将继续工作,就像中间没有代理一样。

我猜想这可以通过透明反向代理来实现,但由于这不是我的专业领域,所以我真的不确定我是否正在寻找正确的方向。

因此问题是:

  • 实现这一目标的正确方法是什么?
  • 哪些解决方案可以实现这一目标?
  • 还有其他方法可以达到上述相同的效果吗?

答案1

这取决于您的反向代理产品,但这绝对是可能的。我们为此使用 MS TMG,它可以让客户端直接向后端进行身份验证,并且它也可以代理端口,但其他反向代理解决方案应该能够做到这一点。

答案2

这是非常有可能的,而且很容易,比如HAProxy

您的字体端/后端配置看起来像这样。

frontend http-in
  bind *:80
  mode http
  option forwardfor
  acl isServer1  hdr(host) -i server1.mydomain.com
  acl isServer2  hdr(host) -i server2.mydomain.com

  use_backend server1 if isServer1
  use_backend server2 if isServer2

backend server1
  mode http
  server server1 127.0.0.1:8001 check

backend server2
  mode http
  server server2 127.0.0.1:8002 check

相关内容