我希望用Spring Boot实现一个简单的反向代理:
我已经查看了@EnableZuulProxy
注释所提供的设施,但它似乎太重了,因为我不想使用Eureka,Ribbon或Hystrix。但是,@EnableZuulServer
对配置有点轻视。
有人能提供我之后的例子吗? Netflix Zuul是正确的选择吗?还是我应该看另一个图书馆?
谢谢!
答案 0 :(得分:3)
使用没有Ribbon,Eureka或Hystrix的Spring Boot设置简单的代理反向很容易。
只需使用parseInt()
注释主应用程序类,并在配置中设置以下属性:
@EnableZuulProxy
然后在您的配置中定义您的路线,如:
ribbon.eureka.enabled=false
其中zuul.routes.<route_name>.path=<route_path>
zuul.routes.<route_name>.url=http://<url_to_host>/
是路由的任意名称,<route_name>
是使用Ant样式路径匹配的路径。
所以一个具体的例子就是这样的
<route_path>
您还可以通过扩展和实施zuul.routes.userservice.path=users/**
zuul.routes.userservice.url=http://localhost:9999/
课程并将其作为ZuulFilter
添加到@Bean
课程来实施自定义身份验证和任何其他标头。
另一个具体的例子:
@Configuration
然后
public class MyFilter extends ZuulFilter {
@Override
public String filterType() {
// can be pre, route, post, and error
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
// RequestContext is shared by all ZuulFilters
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
// add custom headers
ctx.addZuulRequestHeader("x-custom-header", "foobar");
// additional custom logic goes here
// return isn't used in current impl, null is fine
return null;
}
}
答案 1 :(得分:1)
Zuul是个不错的选择。我不确定其他选择,但是,我们已经开始构建Zuul过滤器(前/后和路线),可以拦截请求并根据您的需要进行所有前/后处理和路线。使用整套Eureka,Ribbon和Hysterix以及Zuul并非强制性。