【发布时间】:2017-02-08 18:21:53
【问题描述】:
我有一个微服务架构,其中有几个使用 JHipster 构建的服务。
在一项服务中,我实现了一个 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=2zuul 时,会将用户重定向(http 302 状态)到 id 为 2 的 url,在本例中为 google.com。
如何保留来自客户端的原始请求 URL?
网址必须保留为http://myservice/serviceid/reverseproxy?url=2 而不是http://www.google.com
提前致谢。
【问题讨论】:
标签: nginx url-rewriting reverse-proxy jhipster netflix-zuul