web-dev-qa-db-fra.com

HAProxy pour mettre fin à SSL envoie également SSL au serveur principal

Je voudrais mettre fin à SSL chez HAProxy, faire quelques manipulations sur l'en-tête, réécrire l'URL et rechiffrer le trafic et l'envoyer aux serveurs backend en SSL?

Je n'arrive pas à trouver un moyen de le faire. Je peux obtenir une terminaison SSL régulière et envoyer des requêtes HTTP simples au backend. Mais je dois envoyer SSL au backend.

J'aimerais avoir les fonctionnalités suivantes:

  • Extrayez les en-têtes x-forwarded-for, pour obtenir la véritable adresse IP du client derrière le proxy.
  • Implémentez l'adhérence de session en utilisant un cookie.
  • Faites une réécriture d'URL.
  • Envoyez du trafic SSL vers le backend en utilisant la tenue de session basée sur les cookies.

Sauf si je résilie SSL à la fin du haproxy, je ne peux pas faire de réécriture d'URL.

Toute aide des bonnes personnes ici serait très appréciée.

15
oazabir

Il n'y a rien de spécial à faire dans haproxy.cfg. Vous configurez simplement les réécritures d'URL et les manipulations d'en-tête que vous souhaitez dans votre frontend HAProxy, puis redirigez le trafic vers votre backend SSL. Voici un exemple rapide:

frontend app1_ssl
    bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3

    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000

    # some ACLs and URL rewrites...

    default_backend             backend_app1_ssl


backend backend_app1_ssl
    server mybackendserver 127.0.0.1:4433 ssl verify none
31
Tubeless