私はJHipsterを使用していくつかのサービスをビルドしたmicroservceアーキテクチャを持っています。ZuulリバースプロキシはURLを保持します
私は1つのサービスの中で、のフィルタを実装しました。
public class TestZuulFilter extends ZuulFilter {
@Override
public String filterType() {
return "route";
}
@Override
public int filterOrder() {
return 5;
}
@Override
public boolean shouldFilter() {
String requestUri = RequestContext.getCurrentContext().getRequest().getRequestURI();
return "/serviceid/reverseproxy".equals(requestUri);
}
@Override
public Object run() {
// get url from id
String id = ctx.getRequest().getParameter("id");
Strign url = URLService.getURLFromId(id);
try
{
RequestContext ctx = RequestContext.getCurrentContext();
// redirect
ctx.setRouteHost(new URL(url));
} catch(MalformedURLException ex) {}
return null;
}
}
クライアントは私のサービスhttp://myservice/serviceid/reverseproxy?id=2
zuulリダイレクト(HTTP 302のステータス)この場合、google.comのid 2でURLにユーザーを呼び出します。
どうすればクライアントからの元のリクエストURLを保持できますか?
URLは事前にhttp://myservice/serviceid/reverseproxy?url=2
代わり
http://www.google.com
のおかげでなければなりません。
ありがとうございます。 zuulでproxyficationを実行することは可能ですか?または、私はnginxのような別のツールを使用する必要がありますか? – DropTheCode
Zuulはプロキシですので、可能です.ngninxとの違いは、Zuulではjavaで独自のビジネスロジックを構築できるということです。だからあなたの配属規則が単純ならば、ngninxは仕事をします。 –
私を要約しましょう。私はルートフィルタを作成する必要があります、実行メソッドの中で、 "外部" URLの内容を取得するHttpClientを作成しますか?あなたは私に例を教えてもらえますか? – DropTheCode