haproxy: バックエンドサーバーに直接リンクをインターセプトする方法

haproxy: バックエンドサーバーに直接リンクをインターセプトする方法

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

こうすることで、リンクからすべてのポート割り当てを削除できます。

関連情報