haproxy NOSRV问题与redirect端口

我试图抓住一个端口(8080)上的httpstream量,并将其redirect到一个内部端口(12345)。 我有我的haproxy.cfg中的以下内容

frontend rest_front bind *:8080 #reqadd X-Forwarded-Proto:\ http #reqadd X-Forwarded-Port:\ 12345 acl host_rest hdr(host) -i mypublicserver.myhost.com stats uri /haproxy?stats acl url_blog path_beg /blog # figure out which one to use use_backend rest_cluster if host_rest backend rest_cluster server rest_server_host myinternalserver.myotherhost.com:12345 check 

当我testing到mypublicserver.myhost.com的连接时,我在日志文件中看到以下内容…

 Aug 10 14:18:35 myproxy haproxy[30258]: <IP_ADDRESS>:56779 [10/Aug/2017:14:18:35.309] rest_front rest_front/<NOSRV> -1/-1/-1/-1/2 503 213 - - SC-- 1/0/0/0/0 0/0 "GET /somepage.html HTTP/1.1" 

我不知道为什么后端没有被击中。 我正在使用的URL是http://mypublicserver.myhost.com:8080/spage.html应该触发acl。

没有使用默认后端,只有在host_rest ACL有效时才使用rest_cluster。
因此,任何具有不匹配“mypublicserver.myhost.com”的HOST头的请求都不会被路由到任何后端,这会导致503错误。
所以你可以添加一个default_backend指令或者删除/编辑ACL。

编辑:如果ACL不匹配这是因为它缺less端口部分:8080
试试:

  acl host_rest hdr(主机)-i mypublicserver.myhost.com:8080