Как получить имя сервера, который обслуживал запрос, во фронтальном разделе?
Мне нужно добавить имя сервера в ответ HTTP заголовки X-Servedby. Есть ли способ заменить [сервер] на имя сервера, который обслуживал запрос?
frontend front x.x.x.x:80
default_backend balancing
rspadd X-Servedby:\ [server] #I need to replace [server]
backend balancing
server srv1 x.x.x.x:80 check
server srv2 x.x.x.x:80 check
2 ответа
Решение
Чтобы достичь этого, измените frontend
строфа к следующему:
frontend front x.x.x.x:80
default_backend balancing
acl srv1 srv_id 1
acl srv2 srv_id 2
rspadd X-Servedby:\ srv1 if srv1
rspadd X-Servedby:\ srv2 if srv2
Однако лучшей альтернативой масштабирования будет использование cookie
в backend
строфа:
backend balancing
cookie SRVNAME insert
server srv1 x.x.x.x:80 cookie srv1 check
server srv2 x.x.x.x:80 cookie srv2 check
Надеюсь это поможет!
Мы должны использовать srv_id
который обеспечивает id
значение, определенное для server
frontend front x.x.x.x:80
acl serve_us1 url_beg /west
acl serve_us2 url_beg /east
#defining acl for srv_id
acl served_by_us1 srv_id 1 #look at srv_id
acl served_by_us2 srv_id 2 #look at srv_id
use_backend us1 if serve_us1
use_backend us2 if serve_us2
default_backend balancing
rspadd X-ServedBy:\ us1 if served_by_us1
rspadd X-ServedBy:\ us2 if served_by_us2
backend us1
server srv1 1.1.1.1:80 check id 1 #look at id
backend us2
server srv2 2.2.2.2:80 check id 2 #look at id
backend balancing
server srv1 1.1.1.1:80 check id 1 #look at id
server srv2 2.2.2.2:80 check id 2 #look at id