@Antoine: você geralmente obtém 400 códigos de status se o serviço de back-end não conseguir reconhecer um URL. Pode ser devido a várias razões.
1) Solicitação / URL sendo removida devido ao tamanho.
2) Um caractere ruim na solicitação / URL.
Eu sempre recebo uma resposta Bad Request (400) da Haproxy com essa configuração. Aqui está o frontend:
frontend http-in
bind *:80
mode http
option httplog
log debug
acl cm-acl hdr(host) cm-lab
acl hue-acl hdr(host) hue-lab
use_backend cm if cm-acl
use_backend hue if hue-acl
e aqui o backend:
backend cm
#server cm lrc1i720.server.lan:7180
server 01 toto1i720.server.lan:7180 check
server 02 toto2i721.server.lan:7180 check backup
backend hue
server 01 toto1i724.server.lan:8888 check
# server 02 toto2i725.server.lan:8888 check backup
Ele está trabalhando para o bakend "cm", mas não para o backend "hue". Eu acho que veio do servidor hue que está fazendo um redirecionamento 302. Então, tentei definir diretamente o destino do redirecionamento de URL:
server 01 toto1i724.server.lan:8888/accounts/login/ check
Mas ainda recebo o erro 400 com solicitação inválida. O que posso fazer para permitir que a Haproxy siga o redirecionamento? Ou há outra maneira de fazer por favor?
EDITAR:
Espero que seja isso que você está esperando. Então, aqui está o log (ele está configurado para depurar, mas não é totalmente verboso):
Nov 24 11:17:02 localhost haproxy[71630]: IP.IP.IP.IP:60497 [24/Nov/2017:11:17:02.604] http-in hue/01 2/0/0/4/6 400 652 - - ---- 3/1/0/1/0 0/0 "GET / HTTP/1.1"
Nov 24 11:17:02 localhost haproxy[71630]: IP.IP.IP.IP:60497 [24/Nov/2017:11:17:02.604] http-in hue/01 2/0/0/4/6 400 652 - - ---- 3/1/0/1/0 0/0 "GET / HTTP/1.1"
aqui está o cabeçalho e a resposta da consulta HTTP:
# curl -k -v https://hue-int/
* About to connect() to hue-int port 443 (#0)
* Trying X.X.X.X...
* Connected to hue-int (X.X.X.X) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* skipping SSL peer certificate verification
* SSL connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate:
* subject: CN=vip-host1-host2.server.lan,[email protected],OU=TEST,O=company,L=VILLE,ST=VILLE,C=FR
* start date: mai 19 07:15:22 2017 GMT
* expire date: mai 19 07:15:22 2018 GMT
* common name: vip-host1-host2.server.lan
* issuer: CN=vip-host1-host2.server.lan,[email protected],OU=TEST,O=company,L=VILLE,ST=VILLE,C=FR
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: hue-int
> Accept: */*
>
< HTTP/1.1 400 BAD REQUEST
< Content-Length: 26
< x-xss-protection: 1; mode=block
< x-content-type-options: nosniff
< Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval' *.google-analytics.com *.doubleclick.net *.mathjax.org data:;img-src 'self' *.google-analytics.com *.doubleclick.net http://*.tile.osm.org *.tile.osm.org *.gstatic.com data:;style-src 'self' 'unsafe-inline';connect-src 'self';child-src 'self' data:;object-src 'none'
< strict-transport-security: max-age=31536000; includeSubDomains
< Vary: Accept-Language
< Content-Language: en-us
< Date: Fri, 24 Nov 2017 10:44:48 GMT
< X-Frame-Options: SAMEORIGIN
< Content-Type: text/html
< audited: False
< Server: apache
<
* Connection #0 to host hue-int left intact
Atenciosamente,
A.
@Antoine: você geralmente obtém 400 códigos de status se o serviço de back-end não conseguir reconhecer um URL. Pode ser devido a várias razões.
1) Solicitação / URL sendo removida devido ao tamanho.
2) Um caractere ruim na solicitação / URL.
Tags haproxy redirection