忽略 haproxy 主机头匹配中的端口号

Mik*_*eyB 7 haproxy

使用 haproxy-1.5,我有以下部分配置:

    acl is_api hdr(host) -i api.example.com
    acl is_app hdr(host) -i app.example.com
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的请求与如下所示的请求不匹配:

GET / HTTP/1.1
Host: api.example.com:80
Run Code Online (Sandbox Code Playgroud)

据我所知,我需要这样做:

    acl is_api hdr(host) -i api.example.com
    acl is_api hdr(host) -i api.example.com:80
    acl is_app hdr(host) -i app.example.com
    acl is_app hdr(host) -i app.example.com:80
Run Code Online (Sandbox Code Playgroud)

啊。不!恨!

有没有更好的方法来做到这一点?我可以告诉 haproxy 忽略主机头中的端口吗?

Pau*_*oon 7

您可以通过检查 hdr_dom ( https://code.google.com/p/haproxy-docs/wiki/MatchingLayer7 ) 而不是 hdr来使其工作:

acl is_api hdr_dom(host) -i api.example.com
acl is_app hdr_dom(host) -i app.example.com
Run Code Online (Sandbox Code Playgroud)

请小心,因为我相信这也会匹配“otherstuff.api.example.com”之类的内容。