Могу ли я использовать подстановочный знак SNI, совпадающий с HAProxy?
Я осматриваюсь, пытаясь найти пример HAProxy, совпадающего с подстановочными знаками SNI, и мой поиск поднимает вопросы о сертификатах с одинаковыми названиями, но не связанные с ними.
В частности, мне нужно маршрутизировать nonce домены для dvsni с помощью acme / letsencyrpt.
frontend foo_ft_https
mode tcp
option tcplog
bind 0.0.0.0:443
acl foo_app_letsencrypt req.ssl_sni -i *.acme.invalid
use_backend foo_bk_letsencrypt if foo_app_letsencrypt
default_backend foo_bk_default
backend foo_bk_letsencrypt
mode tcp
option tcplog
server foo_srv_letsencrypt 127.0.0.1:3443
backend foo_bk_default
mode tcp
option tcplog
server foo_srv_default 127.0.0.1:8443
Примечание: все произвольные имена имеют префикс "foo_", чтобы читатель мог легко отличить их от ключевых слов, директив и тому подобного.
2 ответа
+ Изменить
acl foo_app_letsencrypt req.ssl_sni -i *.acme.invalid
в
acl foo_app_letsencrypt req.ssl_sni -m end .acme.invalid
Это не упоминается в официальной документации https://cbonte.github.io/haproxy-dconv/configuration-1.5.html явном виде, но я смог найти другие ресурсы, которые привели меня к правильному результату:
- https://cbonte.github.io/haproxy-dconv/configuration-1.5.html
- http://comments.gmane.org/gmane.comp.web.haproxy/14602
Обратите внимание, что если вы попробуете первый пример, он будет "работать", но "" будет интерпретироваться как литерал "", а не как подстановочный знак.
Даже если это очень старый вопрос, я хотел бы поделиться этим решением, потому что это все еще среди первых результатов Google:
Решение, данное CoolAJ86, не работает для меня (вероятно, оно работает для более старой версии HAProxy). Вместо этого вы можете использовать ssl_fc_sni_end вместо ssl_fc_sni следующим образом:
use_backend apache if { ssl_fc_sni_end domain.com }
Это сделает работу!