良い一日になってください。例を挙げましょう。
/etc/hosts には 2 つの BalanceMember エントリがあります。もちろん、これらの仮想マシンを見ないでください。ブラックボックスです。すべての要求は404が見つかりませんでした。
ServerName service.test.com
SSLProxyEngine on
<Proxy "balancer://service">
BalancerMember https://service1.ng.com
BalancerMember https://service2.ng.com
</Proxy>
ProxyPass "/" "balancer://service/"
ProxyPassReverse "/" "balancer://service/"
/etc/hosts を編集し、名前を service1.ng.com から service.ng.com に変更し、conf apache を次に変更すると
ServerName service.test.com
SSLProxyEngine on
<Proxy "balancer://service">
BalancerMember https://service.ng.com
BalancerMember https://service2.ng.com
</Proxy>
ProxyPass "/" "balancer://service/"
ProxyPassReverse "/" "balancer://service/"
2 つのリクエストのいずれかが 200 OK を返します。理解しましたか?しかし、私はそれを理解することはできません。エージェントがバランサの1つに何かを送信すると、すべてがうまくいきます。まあ、それともイコライザーの後かどうかはわかりません。
返信ありがとうございます。
答え1
service1,2
ホスト名の要求に応答するには、backend()で他の設定またはservice1,2
異なる設定が必要になることがあります。ProxyPreserveHost
。
標準設定では、ProxyPassはバックエンドにプロキシされたときに要求のHostヘッダーを置き換えます。これは、バックエンド自体VirtualHost
に複数の構成があり、使用するものを決定できる必要があるためです。この時点では、もともと要求されたホスト名が何であるかがわからないため、問題が発生する可能性があります。
元のサーバー名に応答するようにすべてのバックエンドを構成することは、問題を軽減するのに完全に有効です。たとえば、ページに配置されたリンクは誤って含まれているか似ていませんが、フロントエンドにhttpdが保持していることを知らせるhttps://service1/
設定が必要です。ProxyPreserveHost on
リクエストのHost
ヘッダー。
答え2
<Location "/">
ProxyPass "https://service.ng.com/"
ProxyPassReverse "https://service.ng.com/"
AllowOverride None
Order Deny,Allow
Deny from All
Allow from All
</Location>
このブロックは私の問題を解決しました。ありがとうございます。