我正在使用 HAproxy 在 Apache 服务器之间负载平衡请求。我正在尝试为特殊用例(提供 kickstart 文件)禁用 HTTPS,并且我正在使用端口 8000 来执行此操作。我有一个 HAProxy 配置,大致如下(省略了一些配置):
frontend provision_frontend_b
bind 10.1.1.1:8000
mode http
default_backend provision_backendb
backend provision_backendb
mode http
server server1 127.0.0.1:8000 weight 1
server server2 10.1.1.2:8000 weight 1
我希望 HAProxy 将向端口 8000 上的外部 IP 发出的请求重定向到端口 8000 上的环回地址,在那里我有 Apache 监听。Apache 配置为通过 HTTP 提供静态文件。
奇怪的是,当我使用前端的 DNS 名称从浏览器访问服务器时:http://myhost.mydomain:8000,我被重定向到 HTTPS 和 SSL 证书错误。当我尝试使用 IP http://10.1.1.1:8000时,它可以工作(并且不会重定向到 HTTPS)。
HAProxy 有什么理由这样做吗?它似乎不是 Apache,因为我已将 HAProxy 配置为重定向到其他仅支持 HTTP 的 Apache 服务器,但仍然收到此错误。
我在 HAProxy 配置中看到的唯一内容是另一个配置为重定向到 SSL 的前端:
frontend http_frontend
bind :80
mode http
redirect scheme https if !{ ssl_fc }
但是,它正在侦听不同的端口。我试图将重定向注释掉,但没有解决问题。
不,它不是 Haproxy。Haproxy 与您的 https 重定向无关。看起来myhost.mydomain已缓存在您的网络浏览器中,用于内部 307 重定向。这将始终以 https 模式发送您的流量。清除浏览器中的缓存和cookie,它应该可以工作。我不确定您是否可以从服务器端做任何事情,我曾经遇到过这个问题,我尝试强制重定向到 http 方案,但随后出现了许多重定向错误。