
haproxy をセットアップしましたが、問題なく動作し、バックエンドのサーバーにある Web ページにアクセスできます。
セットアップは次のとおりです。
ポートに応じて異なるバックエンドを指す単一のフロントエンドhaproxyサーバーがあります
- フロントエンド:81 ポイントからバックエンド:8100 ポイント
- フロントエンド:82 ポイントからバックエンド:8200 ポイント
フロントエンド Web ページには次http://frontend:82/
のようなリンクがあり、これらのリンクのいずれかをクリックすると、haproxy は適切なバックエンド サーバーに接続することを確認します。これらのリンクの 1 つは(バックエンド サーバーと別のポート)http://frontend:82/foo
を指します。http://backend:8200/bar
そのリンクをクリックすると、フロントエンドの haproxy ではなく、バックエンドのサーバーにリダイレクトされます。バックエンド サーバーへの呼び出しを傍受する方法はありますか?
答え1
ユーザーがリンクをクリックするとhttp://backend:8200/bar
、「バックエンド」の DNS が haproxy を指していない限り、リクエストをキャッチすることはできません。
ポートはおそらくこれを行うための最良の方法ではありません。
フロントエンドを80にして、URLに基づいてACLを使用する方が良いでしょう。
例えば:
frontend http_frontend
bind *:80
acl path_foo path_beg /foo
acl path_barbar path_beg /bar
use_backend foo_backend if path_foo
use_backend bar_backend if path_bar
backend foo_backend
server backend:8200
backend bar_backend
server backend:8100
こうすることで、リンクからすべてのポート割り当てを削除できます。