2 votes

Comment permettre à Haproxy de suivre une redirection ?

J'obtiens toujours une réponse Bad Request (400) de Haproxy avec cette configuration. Voici le 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

et ici le 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

Cela fonctionne pour le backend "cm", mais pas pour le backend "hue". Je suppose que cela vient du serveur hue qui fait une redirection 302. J'ai donc essayé de définir directement la cible de la redirection url :

    server 01 toto1i724.server.lan:8888/accounts/login/ check

Mais je reçois toujours l'erreur 400 avec Bad request. Que puis-je faire pour permettre à Haproxy de suivre la redirection ? Ou existe-t-il un autre moyen de procéder ?

EDIT :

J'espère que c'est ce que vous attendez. Voici donc le journal (il est réglé sur debug, mais il n'est absolument pas assez verbeux) :

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"

voici l'en-tête de la requête HTTP et la réponse :

# 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,E=toto@titi.fr,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,E=toto@titi.fr,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

Regards,

A.

1 votes

HAProxy ne suit pas les redirections. Il renvoie alors au navigateur. Ce que vous essayez d'accomplir n'est vraiment pas clair, mais veuillez nous montrer l'entrée du journal pour la requête qui a échoué ainsi que les en-têtes de requête et de réponse.

0 votes

Michael : Merci, j'ai mis à jour la question, j'espère que cela correspond à ce que vous attendiez. Salutations, A.

1 votes

HAProxy semble fonctionner correctement. Cette erreur provient du serveur back-end 01 dans le back-end hue ; comme vous pouvez le voir dans l'en-tête de réponse, Server: apache . Vous devez examiner les journaux de ce système pour déterminer ce qu'il n'aime pas dans la requête entrante.

0voto

navmarwaha Points 11

@Antoine : Vous obtenez généralement le code d'état 400 si le service backend n'est pas en mesure de reconnaître une URL. Cela peut être dû à plusieurs raisons.

1) La requête/URL est purgée en raison de sa longueur.
2) Un mauvais caractère dans la demande/URL.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X