【问题标题】:Haproxy Backend module uses IP instead of domain nameHaproxy 后端模块使用 IP 代替域名
【发布时间】:2019-06-29 10:39:34
【问题描述】:

我正在尝试在 haproxy 后端模块配置中使用域名

backend prod_auth
  balance leastconn
  option httpchk GET /auth-service/generalhealthcheck
  http-check expect string "Service is up and reachable"
  server auth-service-1 domain-service.com:8080 check

但是 haproxy 使用 domain-service.com 的 IP(10.1.122.83) 而不是域名本身进行健康检查,这成为一个问题,因为我的服务在域名而不是 IP 上工作。

root@ram:~$ curl http://domain-service.com/auth-service/generalhealthcheck
["Service is up and reachable"]

root@ram:~$ curl http://10.1.122.83/auth-service/generalhealthcheck
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>

我无法让我的服务在 IP 上运行,因为有多个其他服务在同一台服务器上运行并使用不同的域名 (rDNS)。

我不知道为什么 haproxy 使用 IP 而不是域名,我使用 WireShark 进行了验证。有什么办法可以强制 haproxy 使用后端模块中提到的域名?

我尝试在 /etc/hosts 中进行设置,但不起作用

domain-service.com domain-service.com

我正在使用 HA-Proxy 版本 1.7.8 2017/07/07

【问题讨论】:

    标签: haproxy


    【解决方案1】:

    您可以使用相同的option httpchk 自定义Host 标头发送到您的域,如下所示:

    backend domain-service-backend
       mode http
       option httpchk GET /get HTTP/1.1\r\nHost:\ domain-service.com
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      相关资源
      最近更新 更多