一部のビデオコンテンツをストリーミングするために、VPSでHaproxyを使用しています。現在の設定では、Haproxy.confファイルのフロントエンドセクションとバックエンドセクションにあるすべてのドメインについて言及する必要があります。 10チャンネルを視聴する必要がある場合は、多くのドメインを追加する必要があります。このプロキシは、すべてのWebトラフィックではなく、特定のストリーミングサイトにのみ使用します。 openwrtルーターにDnsmasqをインストールしましたが、必要なドメインのみをVPSにポイントできます。 dnsmasqのエントリのみを追加する必要があり、dnsmasqがスローするすべてのものをプロキシするためにHaproxyが必要です。 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はいくつかのドメイン名で開始しません。それ以外は、dnsmasqまたはBindを使用してDNSポインティングを設定する必要があります。そのためには、haproxyがユーザーから取得したものをすべてのドメインに転送するように構成する必要があります
前に述べたように、構成フォーマットはバージョン間で変更されているため、決定的にはバージョンを知る必要がありますが、これが私がそれを行う方法です(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、something.mewild.com)は、このACLに送信され、目的のバックエンドマッピングを使用します。