私はhaproxyをインストールしましたが、それは正常に動作します。現在、次のような構成があります。
frontend public_http
# Listen on port 80
bind *:80
mode http
# Define ACLs for each domain
acl acl_webtest hdr(Host) -i -f /etc/haproxy/acls/webtest
use_backend back_web_test if acl_webtest
backend back_web_test
mode http
balance roundrobin # Load Balancing algorithm
option httpchk
option forwardfor
server webtest 192.168.0.123:80 weight 1 maxconn 512 check
ご覧のとおり、着信HTTPトラフィックを同じポートのバックエンドにリダイレクトしています(HTTPのデフォルトは80)。
しかし、私の質問:bind *:<port>
ステートメントの束なしで単一のフロントエンドを作成し、同じ<port>
への単一のバックエンドにリダイレクトすることは可能ですか?ただし、HTTPトラフィックのみ。 HTTPのデフォルトポートが80であることは知っていますが、HTTPリクエストを任意のポートに送信できます。
TCPプロキシのように見えますが、ドメインに基づいてバックエンドにリダイレクトする必要があり、TCPレイヤー(OSI 4)はドメインについて何も知りません。
だから私は私の問題を明確に説明したことを願っています。
助けていただければ幸いです。
server行の:portを省略することでこれを行うことができます
frontend public_http
# Listen on port 80 to 1024, included
bind :80-1024
# Listen on ports 8088, 8080, 8000
bind :8088,:8080,:8000
mode http
# Define ACLs for each domain
acl acl_webtest hdr(Host) -i -f /etc/haproxy/acls/webtest
use_backend back_web_test if acl_webtest
backend back_web_test
mode http
balance roundrobin # Load Balancing algorithm
option httpchk
option forwardfor
server webtest 192.168.0.123 weight 1 port 80 maxconn 512 check
この構成では、クライアントが接続しているのと同じポートにバックエンド接続が確立されます。サーバー回線の個別のportキーワードは、ヘルスチェックに使用されます。