【问题标题】:HAProxy Namebase routing forwarding to same backendHAProxy Namebase 路由转发到同一后端
【发布时间】:2017-06-22 08:34:00
【问题描述】:

当我点击 http://drappointment.mytonic.com 时,它将转到 mytonic_nonssl 后端。但是根据配置,应该是去drapointment_nonssl后端。

是不是配置有问题???

HAProxy 版本: 1.5.18

配置:

global
log         127.0.0.1 local2
chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy
group       haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
   timeout client 30s
   timeout server 30s
   timeout connect 5s

frontend https
   bind *:443
   mode tcp
   tcp-request inspect-delay 5s
   tcp-request content accept if { req_ssl_hello_type 1 }
   acl host_mytonicssl req_ssl_sni -i mytonic.com
   acl host_mytonicssl_www req_ssl_sni -i www.mytonic.com
   acl host_drappointmentssl req_ssl_sni -i drappointment.mytonic.com
   use_backend mytonic_ssl if host_mytonicssl
   use_backend mytonic_ssl if host_mytonicssl_www
   use_backend drappointment_ssl if host_drappointmentssl


backend mytonic_ssl
   mode tcp
   balance roundrobin
   stick-table type binary len 32 size 30k expire 30m
   acl clienthello req_ssl_hello_type 1
   acl serverhello rep_ssl_hello_type 2
   tcp-request inspect-delay 5s
   tcp-request content accept if clienthello
   tcp-response content accept if serverhello
   stick on payload_lv(43,1) if clienthello
   stick store-response payload_lv(43,1) if serverhello
   option ssl-hello-chk
   server server1 10.10.17.222:8443 check

 backend drappointment_ssl
   mode tcp
   balance roundrobin
   stick-table type binary len 32 size 30k expire 30m
   acl clienthello req_ssl_hello_type 1
   acl serverhello rep_ssl_hello_type 2
   tcp-request inspect-delay 5s
   tcp-request content accept if clienthello
   tcp-response content accept if serverhello
   stick on payload_lv(43,1) if clienthello
   stick store-response payload_lv(43,1) if serverhello
   option ssl-hello-chk
   server server1 10.10.17.222:5001 check

frontend http
   bind *:80
   mode http
   acl host_mytonic_http hdr_dom(host) -i mytonic.com
   acl host_mytonic_http_www hdr_dom(host) -i www.mytonic.com
   acl host_drappointment_http hdr_dom(host) -i drappointment.mytonic.com
   use_backend mytonic_nonssl if host_mytonic_http
   use_backend mytonic_nonssl if host_mytonic_http_www
   use_backend drappointment_nonssl if host_drappointment_http

backend mytonic_nonssl
   mode http
   balance roundrobin
   option httpclose
   option forwardfor
   server server1 10.10.17.222:8080 check

backend drappointment_nonssl
  mode http
  balance roundrobin
  option httpclose
  option forwardfor
  server server1 10.10.17.222:5000 check

【问题讨论】:

    标签: haproxy


    【解决方案1】:

    配置错误。

    hdr_dom 是一个“域匹配”——它匹配任何与. 分隔符和/或字符串的一端或两端的任何组合完全对齐的东西。它会找到与或在个域名中匹配的域名。

    例如,这个:

    hdr_dom(host) -i example.com
    

    ...匹配所有这些:

    example.com
    www.example.com
    example.com.io
    us-west-2.api.example.com
    

    您的 ACL:

    acl host_mytonic_http hdr_dom(host) -i mytonic.com
    

    ...匹配drappointment.mytonic.com,因此这个...

    use_backend mytonic_nonssl if host_mytonic_http
    

    .... 是请求所采用的路径,因为它是通过引用 ACL 来评估 Host 标头的第一条规则。使用第一个匹配项。

    尝试hdr() 而不是hdr_dom()

    acl host_mytonic_http hdr(host) -i mytonic.com
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多