Mam konfigurację HAProxy skonfigurowaną do przyjmowania żądań do * .mysubdomain.com. HAProxy przeanalizuje poddomeny (prod lub dev od prod.mysubdomain.com lub dev.mysubdomain.com) i przekazuje do właściwego backendu. Istnieją dwa backendy, jeden dla prod i jeden dla dev. Każdy backend zawiera dwa wpisy serwera wskazujące na instancje Marathon LB w każdej poddomenie.Walidacja JWT w HAProxy
Poddomeny wymagają pliku cookie JWT do uwierzytelnienia w zapleczu. Mam klucz publiczny do sprawdzania ważności JWT, ale chciałbym to zrobić w HAProxy. Czy istnieje sposób na dodanie własnego kodu do sprawdzania poprawności JWT w konfiguracji HAProxy?
Plik konfiguracyjny HAProxy jest następujący:
global
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
mode http
# Returns true when one of the headers contains one of the strings either isolated or delimited by dots. This is used to perform domain name matching.
acl host_dev hdr_dom(host) -i dev
acl host_prod hdr_dom(host) -i prod
acl jwtPresent req.cook(JWT) -m found
use_backend prod_domain if jwtPresent host_prod
use_backend dev_domain if jwtPresent host_dev
default_backend prod_domain
backend prod_domain
balance roundrobin
server prodDomain1 "${MARATHON_LB_PROD_1}" maxconn 32 check
server prodDomain2 "${MARATHON_LB_PROD_2}" maxconn 32 check
backend dev_domain
balance roundrobin
server devDomain1 "${MARATHON_LB_DEV_1}" maxconn 32 check
server devDomain2 "${MARATHON_LB_DEV_2}" maxconn 32 check
Ja też! Byłoby jeszcze lepiej, gdyby HAP mógł wstrzykiwać roszczenia jako nagłówki żądań. –