У меня есть микросервисная архитектура с несколькими службами, созданная с использованием JHipster.Zuul reverse proxy preserve URL
Внутри одной службы я внедрил zuul route фильтр.
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 статуса) пользователь на URL с идентификатором 2, в этом случае google.com.
Как можно сохранить первоначальный URL-адрес от клиента?
URL-адрес должен оставаться http://myservice/serviceid/reverseproxy?url=2
вместо http://www.google.com
Спасибо заранее.
Благодарим вас за разъяснение. Можно ли проксификовать с помощью zuul? Или я должен использовать другой инструмент, например nginx? – DropTheCode
Zuul - прокси, так что да, это возможно. Разница с ngninx заключается в том, что в Zuul вы можете создать свою собственную бизнес-логику в java. Поэтому, если ваши правила проксирования просты, ngninx выполнит эту работу. –
Позвольте мне повторить. Мне нужно создать фильтр маршрутов, внутри метода запуска создайте HttpClient, который получает содержимое «внешнего» URL-адреса? Можете ли вы привести мне пример? – DropTheCode