同じサーバー上の複数のバックエンド サービスのプロキシとして機能する Apache Web サーバー (Linux) の設定ファイルを作成する必要があります。各バックエンド サービスは、別々のポートで systemd サービスとして実行されています。
confファイルには次の内容が含まれています
<VirtualHost: *:80>
ProxyPass /api/policies/??? http://127.0.0.1:6001/
ProxyPassReverse /api/policies/??? http://127.0.0.1:6001/
ProxyPass /api/policies/???/coverages http://127.0.0.1:6002/
ProxyPassReverse /api/policies/???/coverages http://127.0.0.1:6002/
ProxyPass /api/policies/???/premiums http://127.0.0.1:6003/
ProxyPassReverse /api/policies/???/coverages http://127.0.0.1:6003/
</VirtualHost>
??? – URLの一部となるリクエストパラメータを参照します。これをconfでどのように定義すればよいですか?どのような表現を使用する必要がありますか?
答え1
いくつかのアプローチが可能です。
ProxyPassディレクティブを正しい順序で囲みます
LocationMatch
指令; 次のようなもの<LocationMatch "/api/policies/(.*)/coverages"> ProxyPass http://127.0.0.1:6002/ # ... </LocationMatch> <LocationMatch "/api/policies/(.*)/premiums"> ProxyPass http://127.0.0.1:6003/ # ... </LocationMatch> <Location "/api/policies/"> ProxyPass http://127.0.0.1:6001/ # ... </Location>
mod_rewriteを使用するリバースプロキシ
[P]
パターン マッチングを可能にするには、ProxyPass ディレクティブではなくtarget を使用します。RewriteRule "^/api/policies/(.*)/coverages/(.*)" "http://127.0.0.1:6002/" [P] RewriteRule "^/api/policies/(.*)/premiums/(.*)" "http://127.0.0.1:6003/" [P]