【问题标题】:How to make an HTTP app HTTPS with HAProxy and SSL Termination如何使用 HAProxy 和 SSL 终止使 HTTP 应用程序 HTTPS
【发布时间】:2021-12-21 15:37:03
【问题描述】:

我工作的地方有一个托管在 Windows 服务器上的 Web 应用程序,所有用户都使用 HTTP 而不是 HTTPS 访问该应用程序。这是由于开发团队无法解决的一些限制。

所以我认为我可以使用 HAProxy 和 SSL 终止来解决这个问题,因此用户将首先使用 HTTPs 与代理通信,然后代理将使用 HTTP 与应用服务器通信。这将位于专用 VLAN 内,因此无法嗅探 HTTP 流量。

用户使用此架构访问应用程序 --> http://servername:port/path/to/app

因此,用户应该输入 https://haproxy.domainname:port/path/to/app 而不是这个 haproxy 应该处理与应用服务器的通信。

这可能吗?还是我应该考虑另一种解决方案?

我想出了这个:

frontend haproxy.domain.name
    bind ipaddress:port ssl crt /home/cert.pem
    acl is_bdc path -i -m beg /path/to/app
    use_backend web_servers if is_bdc
    default_backend web_servers

backend web_servers
        balance roundrobin
        server server1 ipaddress:port

我可以使用此配置访问应用程序服务器,但应用程序使用 Web 浏览器的 URL 填充一些变量,并且当我使用另一个 URL(haproxy.domain.name 而不是应用程序服务器主机名)访问应用程序时,它导致一些错误。是否可以在 url 上维护应用服务器主机名,但也可以保持 SSL 终止?使用的证书是通配符,所以添加域名就足够了(我认为)

提前谢谢你!

【问题讨论】:

  • 要维护主机名,必须在主机名指向的系统上运行haproxy。
  • Steffen,感谢您提供的信息。我将尝试在测试环境中的一个应用服务器上安装 haproxy,并评论我的结果。
  • @SteffenUllrich 好吧,既然 HAProxy 不适用于 windows 服务器,也许我可以使用另一个反向代理来完成这项工作?
  • 使用任何适合您的反向代理。像 nginx、apache、iis、... - 这里没有什么特别需要的。
  • @SteffenUllrich 好吧,我设法将 IIS 用作反向代理,并且大多数应用程序似乎都可以工作,但是在某些站点上,由于某些内容是使用 HTTPs 请求的,所以我收到了混合内容的浏览器错误作为 HTTP 服务。似乎 IIS 出站重写规则不起作用。我仍在试图找出原因。

标签: ssl https haproxy sysadmin


【解决方案1】:

嗯,有几个选项可以解决您的问题。

1.) 告诉应用服务器它在反向代理后面运行,并将应用引擎配置为使用 haproxy.domain.name 作为域/主机部分,类似于 tomcats Proxy Support How-To

2.) 您可以使用http-response replace-headerreplace value 重写URL。这不适用于响应正文中的链接。

由于您没有提到 HAProxy 版本,我链接到最新版本。 也许您还需要配置 IIS 以了解它在反向代理之后工作,以防您使用 IIS。

【讨论】:

    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 2015-08-04
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2013-05-02
    • 2012-10-25
    相关资源
    最近更新 更多