Надеясь, кто-то может помочь подтвердить, если это должно работать? Я пытаюсь направить трафик 3 субдоменов к одному и тому же хосту haproxy;
Вот моя установка
haproxy с одним интерфейсом ip 10.10.10.100 и днс имя haproxy01.mydomain.com
3 записи CNAME, связанные с ним; sub1.mydomain.com, sub2.mydomain.com и sub3.mydomain.com
весь входящий трафик для порта 443.
Есть два серверных сервера приложений, которые принимают трафик на трех портах 8081, 8082, 8083, скажем так;
sub1.mydomain.com для 8081 sub2.mydomain.com для 8082 и sub3.mydomain.com для 8083
Приложению требуется проход SSL только для трафика порта 8081, поэтому я считаю, что для него я должен использовать режим tcp, другой трафик для 8082 и 8083 также SSL, но его можно завершить в Haproxy, но для тестирования я прошел со всеми TCP Режим.
Мой раздел конфигурации для достижения этого ниже;
#Application Setup
frontend mytraffic
bind *:443
mode tcp
acl host_sub1 hdr(host) -i sub1.mydomain.com
acl host_sub2 hdr(host) -i sub2.mydomain.com
acl host_sub3 hdr(host) -i sub3.mydomain.com
use_backend sub1_nodes if host_sub1
use_backend sub2_nodes if host_sub2
use_backend sub3_nodes if host_sub3
option tcplog backend sub1_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8081 check
server node2 10.10.10.102:8081 check
backend sub2_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8082 check
server node2 10.10.10.102:8082 check
backend sub3_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8083 check
server node2 10.10.10.102:8083 check
# APPLICATION SETUP END
Когда я пытаюсь получить доступ к серверам приложений через HAproxy, например, для трафика 8082, он выдает это журналы;
localhost haproxy [6097]: xxxx: 51241 [20 / Mar / 2015: 12: 19: 38.720] mytraffic mytraffic / -1 / -1 / 0 0 SC 0/0/0/0/0 0/0
цените некоторое руководство относительно этой установки.
PS Я не могу вставить изображение для ясности, так как это мой первый пост :-(
Ответы:
В режиме TCP HAProxy не будет декодировать HTTP-запрос, поэтому ваши
acl
строки ничего не будут делать, и веб-интерфейс никогда не сможет соответствовать внутреннему интерфейсу, как показывают введенные вами журналы:mytraffic/<NOSRV>
означает, что он не смог выбрать бэкэнд или сервер.Вам придется разделить 3 субдомена на 2 разных внешних интерфейса, каждый со своими IP-адресами, так как все они подключаются через порт 443. Один для сквозного доступа, другой для завершения SSL и переключения контента с использованием
mode http
. Предостережение заключается в том, что если вы добавите 4-й поддомен (sub4.mydomain.com), который также требует переадресации, вам потребуется третий интерфейс и IP-адрес.Вам также необходимо создать разные записи CNAME или A в DNS, чтобы правильные субдомены указывали на правильные IP-адреса.
Учитывая эту конфигурацию DNS:
Конфигурация HAproxy будет выглядеть примерно так:
источник
ca-file
иverify optional
опции кbind
заявлению. Если вы это сделаете, вы можете привязать один интерфейс к одному IP, а затем переключить контент на соответствующие серверы, как того требует заголовок узла . Чтобы подтвердить, что взаимная аутентификация работала, вы можете создать ACL-подобиеacl ClientSSLValid ssl_c_verify 0
, а затем добавить его в качестве еще одного условия кuse_backend
утверждению вродеuse_backend sub1_nodes if host_sub1 ClientSSLValid