web-dev-qa-db-ja.com

Haproxyのドメイン名と一致せずにすべてのトラフィックをプロキシする

一部のビデオコンテンツをストリーミングするために、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
gripenfighter

前に述べたように、構成フォーマットはバージョン間で変更されているため、決定的にはバージョンを知る必要がありますが、これが私がそれを行う方法です(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に送信され、目的のバックエンドマッピングを使用します。

1