【发布时间】: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