问题标签 [netflix-zuul]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1344 浏览

spring-data-rest - Spring Cloud zuul 代理映射与 Spring Data Rest API

在关于Angular JS 和 Spring Security的文章之后,我有一个基于 Spring Data Rest 的 API 和 angularjs 上的客户端应用程序。API 托管在上下文“some-api”上,而客户端应用程序托管在根上下文上。客户端应用程序的 Zuul 代理配置如下所示。虽然一切都很好,但客户端应用程序和 API 之间的代理配置并没有按预期工作。来自客户端 /api 的响应包含中断 API 调用的“some-api”子上下文。

祖尔配置:

API 应用程序:

http://localhost:9988/some-api/

客户端应用程序:

http://localhost:9900/api/

0 投票
8 回答
48100 浏览

spring-cloud - Zuul 在长请求中超时

我正在使用前端 Spring Cloud 应用程序(微服务)作为 Zuul 代理(@EnableZuulProxy)将请求从外部源路由到使用 Spring Cloud(Spring Boot)编写的其他内部微服务。
Zuul 服务器直接来自示例部分中的应用程序

我在本地运行了这组服务,一切似乎都运行良好,但如果我在有一定负载的网络上运行它,或者通过 VPN,然后我开始看到 Zuul 转发错误,我在日志中看到客户端超时.

有什么方法可以更改 Zuul 转发的超时时间,以便我可以从我的直接关注中消除这个问题?为此有哪些可访问的参数设置?

0 投票
3 回答
3209 浏览

filter - Netflix Zuul 比常规 Servlet 过滤器做得更多?

我了解 Netflix Zuul 充当过滤器,可以路由请求(尤其是在基于分布式 API 的环境中)。

  1. 与 Struts2 类框架中的常规 Servlet 过滤器或拦截器相比,Zuul 带来了哪些特殊功能?

  2. Zuul 过滤器是由 Servlet 过滤器本身制成的吗?

注意:很少有关于 Zuul 的文章谈到可以在 Zuul 中完成的动态路由、减载、洞察、健康分析等。我的问题是,我不能在我的传统过滤器或 Struts2 Interceptors..etc 中执行相同的操作吗?Zuul 带来了什么不同?

0 投票
2 回答
14282 浏览

java - 如何创建依赖于 Spring Bean 的自定义 Spring PropertySource

我正在尝试将 spring-cloud 堆栈用于将使用 Zuul 的项目。在我的组织中,我们有一个基于 xml 的自定义配置堆栈,并执行属性组合和分层覆盖。由于处理此配置的方式,我一直在努力为它创建一个 PropertySource。

我的自定义 PropertySource 必须使用我的 Config bean,但是因为 PropertySources 在 Spring Boot 的引导过程中被初始化,所以应用程序上下文还没有完全初始化,我无法访问我的自定义 Bean,它公开了我们基于 xml 的配置系统。

@ConfigurationProperties 似乎完全偏向于 .properties 和 .yaml 文件。Config bean 在 ApplicationContextInitializer 中初始化。有没有办法在各种服务中延迟 ConfigurationProperties 的解析,以便我可以在初始化后使用我的 Config bean 构造我的自定义属性源?

0 投票
0 回答
983 浏览

spring-cloud - 头信息的zuul路由

我注意到 zuul 似乎只传递唯一的 HTTP 标头。

有一种情况,我有两个具有相同键名但值不同的标题,它只传递该名称中的第一个而不是第二个。

我最初注意到我只得到了第一个标题,当我再次切换订单时,第一个订单但另一个。

这是预期的行为吗?RFC 支持具有相同密钥的多个标头

有什么方法可以支持传递相同键名的多个标头?

0 投票
3 回答
6162 浏览

spring-cloud - 覆盖 Zuul 过滤器 SendErrorFilter

org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter 类处理错误响应。

我想覆盖此过滤器以在转发等时执行自定义响应而不是 ZuulException。

如何用我自己的版本替换它?只写和注册?会这样做还是需要其他东西?

0 投票
2 回答
15246 浏览

spring-mvc - Spring Boot + 云 | Zuul 代理 | 404 错误

我使用 Spring Cloud 和 Zuul 代理作为我的 RESTful 服务的网关。

网关应用程序(运行在 8080 端口上的 Spring Boot Web 应用程序)相关代码:-

主要课程:-

Zuul 映射:-

在启动上述 UI 网关应用程序期间,我可以在日志中看到代理的映射已注册:-

REST 服务(在端口 9000 上运行的 Spring Boot Web 应用程序)相关代码:-

使用休息客户端(在我的例子中是 POSTMAN)我能够成功地从上面的端点获得响应(在处理了身份验证令牌之后)。

我在 UI 应用程序中使用 AngularJS 从 REST 端点获取数据。

相关代码:-

上面的调用返回 404 错误:- 这是我的 Chrome 调试器显示的内容:-

请求标头:-

响应标头:-

这里有什么问题?映射不正确还是我错过了其他东西?

解决了

根据接受的答案,更改 Zuul 映射在更改为:-

0 投票
1 回答
6121 浏览

spring-security - Spring Cloud 中的粘性会话和 Zuul

我有一组微服务,我们使用 zuul 从前端进行路由,作为使用 Spring Cloud 将 uri 上下文路径映射到特定微服务的一种方式。

在内部和外部,我们使用 spring OAuth2 并且效果很好。

但是,对于一项特定服务,出现了对 SAML 的要求,这对该服务提出了粘性会话要求。

是否有人考虑过这一点,以及为 zuul 提供粘性会话支持的正确方法是什么。

作为一种解决方法,直到我弄清楚这一点,我将一些请求从我们在前端的 HAProxy 直接路由到该服务。

0 投票
2 回答
17849 浏览

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

我正在寻找使用 Spring Boot 实现一个简单的反向代理,即:

  • 轻松添加路线
  • 能够基于每个路由添加自定义身份验证
  • 根据需要添加其他标题

我查看了@EnableZuulProxy注释提供的设施,但它似乎太重了,因为我不想使用 Eureka、Ribbon 或 Hystrix。但是,@EnableZuulServer配置有点轻。

谁能提供一个我所追求的例子?Netflix Zuul 是正确的选择,还是我应该看另一个库?

谢谢!

0 投票
0 回答
1953 浏览

jquery - Spring Boot+ Oauth 2.0 +Zuul Proxy 第三方访问

我正在尝试使用 Spring boot + Oauth 2.0 创建 RestAPI,并希望从另一个 Web 应用程序访问它。

我的 Spring 应用程序部署在 localhost:8585/oauth/token。如果我使用 chrome REST 扩展来调用它,它工作得非常好,但是当我尝试使用 jquery ajax 调用从我的 Web 应用程序中获取 oauth 令牌时,它给了我以下错误

'XMLHttpRequest 无法加载 localhost:8585/oauth/token。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost:8080' 不允许访问。响应具有 HTTP 状态代码 401。

我参考了一些文档,@EnableZuulProxy 可以为服务器启用代理,但它不起作用

应用程序类

Web 应用程序页面使用 Jquery ajax 调用使用 clientid、客户端密码和授权类型作为 client_credential 调用 oauth/token

AND 应用程序.yml

和 oauth 服务器 http 配置为

.antMatchers("/oauth/token").authenticated() .and().csrf().csrfTokenRepository(csrfTokenRepository()).and() .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);