haproxy problema NOSRV com porta redirecionada

2

Eu estou tentando capturar o tráfego http em uma porta (8080) e redirecioná-lo para uma porta interna (12345). Eu tenho o seguinte no meu 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

Quando testo a conexão com mypublicserver.myhost.com, vejo o seguinte no arquivo de log ...

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"

Não consigo entender por que o back end não foi atingido. O URL que estou usando é o link que deve acionar o acl.

    
por Scott Vercuski 10.08.2017 / 16:21

2 respostas

4

Não há backend padrão para usar e rest_cluster é usado somente quando a ACL host_rest é válida.
Portanto, qualquer solicitação com um cabeçalho HOST que não corresponda a "mypublicserver.myhost.com" não será roteada para nenhum back-end e isso resultará em um erro 503.
Assim, você pode adicionar uma diretiva default_backend ou soltar / editar a ACL.

EDIT: se a ACL não está correspondendo, é porque está faltando a parte da porta: 8080
Experimente com:

 acl host_rest hdr(host) -i mypublicserver.myhost.com:8080 
    
por 10.08.2017 / 19:52
0

Eu enfrentei um problema semelhante e recebi o erro 503 com string semelhante no arquivo de log. Thx para @MoEmEn eu resolvo isso.

A principal coisa em resposta é " a ACL não está correspondendo, porque está faltando a parte da porta "

O melhor para mim foi escrever a regra em que o URL pode conter porta ou não. Então esta é minha regra para o HAproxy:

use_backend host_rest if { req.hdr(Host),regsub(:[0-9]+$,) -i mypublicserver.myhost.com }
    
por 09.03.2018 / 18:39