
nginx からのトラフィックを、パスに対応する特定の IP にルーティングしようとしています。
基本的に、 にアクセスする場合http://example.com/192.168.0.2/something
、その特定の IP を持つポッドにトラフィックをリダイレクトします (結果は になるはずですhttps://192.168.0.2/something
)。
これ(および複数のバリエーション)を試しましたが、機能しないようです。
location ~* "([0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3})\/(.*)" {
proxy_pass http://192.168.219.174:8080$uri;
proxy_set_header Host $host;
}
以下のような静的バージョン(および複数のバリエーション)も試しました
location ~* "/test/" {
rewrite "/test/(.*)" /$1 break;
proxy_pass http://192.168.219.174:8080
proxy_set_header Host $host;
}
これを実現する方法はありますか?
答え1
あなたの設定があなたの質問とどのように対応しているかわかりません(静的IPアドレスを持つバックエンドのみが表示されます192.168.219.174
)。おそらく次のようなことを意味しているのでしょう。
location ~* "(?<pod_ip>[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3})(?<route>/.*)" {
rewrite ^ $route break;
proxy_pass http://$pod_ip;
}