Прокси весь трафик без сопоставления доменных имен в Haproxy
Я использую Haproxy в моем VPS для потокового видео. с моей текущей настройкой мне нужно упомянуть каждый домен в разделе front-end и back-end в моем файле Haproxy.conf. если мне нужно смотреть 10 каналов, мне нужно добавить много доменов. Я использую этот прокси только для определенного потокового сайта, а не для всего веб-трафика. Я установил Dnsmasq на свой маршрутизатор openwrt, и я могу указать только необходимые домены для моего VPS. Мне нужно добавить запись только для dnsmasq и мне нужен Haproxy для прокси всех вещей, которые dnsmasq бросает. я могу настроить что-то вроде подстановочных знаков в конфигурации Haproxy? или есть какие-то другие методы
Мой haproxy.conf, как это
# Frontend for connections over port 80/http
frontend f_sni_catchall
mode http
bind 0.0.0.0:80
log global
option httplog
option accept-invalid-http-request
capture request header Host len 50
capture request header User-Agent len 150
use_backend b_sni_catchall if { hdr(host) -i www.example.com }
default_backend b_deadend
# Backend for handling connections over port 80/http
backend b_sni_catchall
log global
mode http
option httplog
option http-server-close
server www.example.com www.example.com:80 check inter 10s fastinter 2s downinter 2s fall 1800
вместо того, чтобы использовать www.example.com мне нужно использовать что-то вроде этого с джокером
use_backend b_sni_catchall if { hdr(host) -i *.com }
server*e.com *.com:80 check inter 10s fastinter 2s downinter 2s fall 1800
Использование полных доменов в файле конфигурации невозможно из-за проблемы с разрешением DNS. Haproxy не начинается с некоторых доменных имен. Кроме этого мне нужно установить DNS-указание с помощью dnsmasq или Bind. для этого мне нужно настроить haproxy как переадресовывать все домены что он получает от пользователя
1 ответ
Как упоминалось ранее, чтобы быть окончательным, нам нужно знать вашу версию, так как формат конфигурации изменился между версиями, но вот как я это делаю (1.6.3)
frontend web
bind *:80 name http
### Wildcard ACL ###
acl is_wild hdr_dom(host) -i wild
### Wildcard Backend###
use_backend wild if is_wild
backend wild
cookie WILD_HTTP insert
server wild 10.1.1.1:80 cookie A check
Как вы можете видеть, * не нужно, все, что соответствует (например, wild.mydomain.com, mydomain.wild.com, что-то.mewild.com) будет отправлено на этот ACL, а затем будет использовать желаемое отображение бэкэнда.