2016-06-10 8 views
0

Теперь, когда у нас есть динамическое DNS-решение Backend с Haproxy 1.6, мне стало интересно, могу ли я разрешить конечную точку для динамических бэкэндов. Вот то, что я искал бы:Haproxy DNS-серверы основаны на подстановочных знаках

resolvers docker 
nameserver dnsmasq 127.0.0.1:53 

defaults 
mode http 
log global 
option httplog 

frontend f_myapp 
bind :443 
default_backend b_myapp 

backend b_myapp 
server services *:443 check resolvers docker resolve-prefer ipv4 

ИЛИ

server services [%Host]:443 check resolvers docker resolve-prefer ipv4 

Имея это позволило бы мне не надо трогать конфигурацию HAproxy, но только использовать DNS для обновления серверной маршрутизации.

Благодаря Алессандро

ответ

0

server объявлен в HAProxy является единственным IP-адрес назначения. Даже если этот IP-адрес является динамическим и может измениться, как теперь возможно в 1.6, server является единственным/всегда/когда-либо единственным пунктом назначения, а не целью, которая изменяется с каждым запросом. То, что вы рассматриваете, несовместимо с дизайном HAProxy.

Передние серверные серверы должны быть объявлены заранее. Вы можете создавать макеты и изменять их через сокет статистики, а динамическая конфигурация может быть выполнена путем сценария процесса создания файла конфигурации (с использованием внешних инструментов), а затем перезагрузки HAProxy, но ... у него нет внутренней концепции, соответствующей тому, что вы рассматриваете ,

Кроме того, конечно, даже если это было сделано, это проблема с вашим планом - он представляет собой потенциальную дыру в безопасности: если HAProxy должен был интерпретировать %[Host] (который, как я полагаю, относится к %[req.hdr(host)]) в качестве IP-адреса, без разрешения , и вы просто предоставили внутренний доступ всем, кто передал IP-адрес в заголовке хоста.

+0

Спасибо, что ответили. Я уже думал, что это будет ответ. Другие прокси-серверы, основанные на SNI, позволяют ограничивать домены, чтобы проксировать только некоторые домены. – AlessandroEmm