Spring boot 使用Spring Boot和Netflix Zuul的简单反向代理

Spring boot 使用Spring Boot和Netflix Zuul的简单反向代理,spring-boot,spring-cloud,netflix,netflix-zuul,Spring Boot,Spring Cloud,Netflix,Netflix Zuul,我希望通过Spring Boot实现一个简单的反向代理,即: 易于添加路由 能够在每个路由的基础上添加自定义身份验证 根据需要添加其他标题 我已经看过了@EnableZuulProxy注释提供的工具,但它似乎太重了,因为我不想使用Eureka、Ribbon或Hystrix。然而,@EnableZuulServer的配置有点轻 有谁能举一个我所追求的例子吗?Netflix Zuul是这方面的正确选择,还是我应该看看其他图书馆 谢谢 Zuul是个不错的选择。我不确定其他替代方案,但我们已经开始构

我希望通过Spring Boot实现一个简单的反向代理,即:

  • 易于添加路由
  • 能够在每个路由的基础上添加自定义身份验证
  • 根据需要添加其他标题
我已经看过了
@EnableZuulProxy
注释提供的工具,但它似乎太重了,因为我不想使用Eureka、Ribbon或Hystrix。然而,
@EnableZuulServer
的配置有点轻

有谁能举一个我所追求的例子吗?Netflix Zuul是这方面的正确选择,还是我应该看看其他图书馆


谢谢

Zuul是个不错的选择。我不确定其他替代方案,但我们已经开始构建Zuul过滤器(前置/后置和路由),可以拦截请求,并根据您的需要执行所有前置/后置处理和路由。与Zuul一起使用整套Eureka、Ribbon和Histerix不是强制性的。

Simple Reverse Proxy Server 使用SpringBoot而不使用Ribbon、Eureka或Hystrix,很容易设置一个简单的代理反转

只需使用
@EnableZuulProxy
注释主应用程序类,并在配置中设置以下属性:

ribbon.eureka.enabled=false
然后在配置中定义路由,如下所示:

zuul.routes.<route_name>.path=<route_path>    
zuul.routes.<route_name>.url=http://<url_to_host>/
自定义过滤器 您还可以通过扩展和实现
ZuulFilter
类并将其作为
@Bean
添加到
@Configuration
类来实现自定义身份验证和任何附加头

另一个具体的例子是:

公共类MyFilter扩展了ZuulFilter{
@凌驾
公共字符串筛选器类型(){
//可以是pre、route、post和error
返回“pre”;
}
@凌驾
public int filterOrder(){
返回0;
}
@凌驾
公共布尔值shouldFilter(){
返回true;
}
@凌驾
公共对象运行(){
//RequestContext由所有ZuFilter共享
RequestContext ctx=RequestContext.getCurrentContext();
HttpServletRequest=ctx.getRequest();
//添加自定义标题
ctx.addZuulRequestHeader(“x-custom-header”、“foobar”);
//这里有额外的自定义逻辑
//当前impl中未使用return,可以使用null
返回null;
}
}
然后

@配置
公共类网关应用程序{
@豆子
公共MyFilter MyFilter(){
返回新的myFilter();
}
}

您能否提供将请求路由到其他来源的示例?我们正试图通过参考application.yml@yahthirigan中定义的URL模式来实现这一点。您是否正在编写自定义“pre”过滤器来解析YAML文件?如果是这样,那么您是否将其传递给spring cloud netflix项目已定义的“路由”筛选器?我们的预筛选器不解析YAML,但对传入请求执行某些操作。。类似于添加自定义标题的要求。然后,我们将其留给已经存在的路由过滤器,以将其路由到zuul路由中配置的实际端点。
zuul.routes.userservice.path=users/**
zuul.routes.userservice.url=http://localhost:9999/