简单的反向代理服务器
使用没有 Ribbon、Eureka 或 Hystrix 的 Spring Boot 可以轻松设置简单的代理反向。
只需使用 @EnableZuulProxy 注释您的主应用程序类并在您的配置中设置以下属性:
ribbon.eureka.enabled=false
然后在您的配置中定义您的路线,如下所示:
zuul.routes.<route_name>.path=<route_path>
zuul.routes.<route_name>.url=http://<url_to_host>/
其中<route_name> 是您的路由的任意名称,<route_path> 是使用 Ant 样式路径匹配的路径。
所以一个具体的例子是这样的
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;
}
}
然后
@Configuration
public class GatewayApplication {
@Bean
public MyFilter myFilter() {
return new myFilter();
}
}