我试图在一个简单的spring-cloud-Netflix Api网关(反向代理)中使用ZuulFilter,以便对自定义身份验证提供程序(通过Rest调用)验证请求.
过滤器应拒绝使用401的未授权请求,并且不要将这些请求进一步传递给代理服务.
这对ZuulFilter来说甚至可能吗?我没有在Zuuls api中找到文档,示例或其他内容.
有什么建议?
我正在使用Eureka和Zuul开始使用Spring Cloud,并且在构建蓝色/绿色和Canary部署方面遇到了一些问题.到目前为止,我已经完成了基础工作,并让Eureka,Zuul和配置服务器按预期工作.我想要完成的是建立一个有两个版本的服务,比如1.0和1.1.对于特定用户的子集,我想将它们路由到1.1版本,其他人都应该转到1.0版本.
Zuul过滤器API对文档有点了解,我正在努力解决一些概念,所以我想我会在这里问几个问题.我还运行了一些基本的过滤器,除了获取他们请求的主体和服务的身份之外,它不会做很多事情.我在墙上的位置是了解如何向Eureka和Zuul公开同一服务的两个不同版本.我很好奇的一些事情:
/simpleservice,我会暴露两个不同的serviceIDs(即simpleservice和simpleservice-1.1)?如果我这样做,当其中一个目标用户请求时/simpleservice,我让Zuul发送给他们/simpleservice-1.1canary-deployment microservices spring-cloud netflix-eureka netflix-zuul
我们有一个基础设施,包括服务发现和负载平衡(即服务器端与STM和weblogic集群).现在我们正在重构为微服务.我们需要一个API网关,它可以对其他微服务进行基本路由.Netflix Zuul看起来很不错,但是如果没有Eureka我就无法让Zuul工作 - 但我们不需要Eureka,因为我们已经有了服务发现和负载平衡.
谢谢.
当我上传大文件(大约50 MB)时,我得到 org.eclipse.jetty.io.EofException:早期的EOF感知.我的码头服务器版本是" 9.2.9.v20150224 ".Below是堆栈跟踪
org.eclipse.jetty.io.EofException: Early EOF
at org.eclipse.jetty.server.HttpInput$3.noContent(HttpInput.java:505) ~[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]
at org.eclipse.jetty.server.HttpInput.read(HttpInput.java:124) ~[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]
at org.apache.http.entity.InputStreamEntity.writeTo(InputStreamEntity.java:142) ~[httpcore-4.4.1.jar:4.4.1]
at org.apache.http.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.java:96) ~[httpcore-4.4.1.jar:4.4.1]
at org.apache.http.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.java:112) ~[httpclient-4.5.jar:4.5]
at org.apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.java:117) ~[httpcore-4.4.1.jar:4.4.1]
at org.apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:265) ~[httpcore-4.4.1.jar:4.4.1]
at org.apache.http.impl.conn.AbstractClientConnAdapter.sendRequestEntity(AbstractClientConnAdapter.java:231) ~[httpclient-4.5.jar:4.5]
at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:237) ~[httpcore-4.4.1.jar:4.4.1]
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:122) ~[httpcore-4.4.1.jar:4.4.1]
at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:685) ~[httpclient-4.5.jar:4.5]
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:487) ~[httpclient-4.5.jar:4.5]
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882) ~[httpclient-4.5.jar:4.5]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:117) ~[httpclient-4.5.jar:4.5]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) ~[httpclient-4.5.jar:4.5]
at org.apache.http.client.HttpClient$execute$2.call(Unknown Source) ~[na:na]
org.eclipse.jetty.io.EofException
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:192)
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:408)
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:302)
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:129)
at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:676)
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:246)
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:208)
at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:471)
at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:763)
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:801)
at …Run Code Online (Sandbox Code Playgroud) 我正试图从Eureka转到Consul进行服务发现并遇到问题 - 我的网关服务注册和我的客户服务注册,但网关服务不会自动将请求路由到客户服务.我在网关控制器中专门定义的路由,使用Feign客户端来正常工作,但之前(使用Eureka)我可以向任何路径发出请求,例如"/ customer-service/blah"(其中customer-service是注册名称)并且网关只是将请求转发到下游微服务.
这是我的网关bootstrap.yml(它在bootstrap而不是应用程序,因为我也使用consul for config)
spring:
application:
name: gateway-api
cloud:
consul:
config:
watch:
wait-time: 30
discovery:
prefer-ip-address: true
instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
Run Code Online (Sandbox Code Playgroud) 启动应用程序:
@SpringBootApplication
@EnableZuulProxy
public class ZuulServer {
public static void main(String[] args) {
new SpringApplicationBuilder(ZuulServer.class).web(true).run(args);
}
}
Run Code Online (Sandbox Code Playgroud)
我的YAML文件是这样的:
server:
port:8080
spring:
application:
name: zuul
eureka:
client:
enabled: true
serviceUrl:
defaultZone: http://localhost:8761/eureka/
zuul:
proxy:
route:
springapp: /springapp
Run Code Online (Sandbox Code Playgroud)
我有一个名为springapp的微服务应用程序(在端口8081上),并有一些休息服务.以下是我的客户端UI应用:
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="js/libs/jquery/jquery.min.js" ></script>
</head>
<body>
<script type="text/javascript">
$.ajax({
url: 'http://localhost:8080/zuul/springapp/departments',
type: 'GET'
}).done(function (data) {
consoe.log(data);
document.write(data);
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但我得到了一个
XMLHttpRequest cannot load http://localhost:8080/zuul/springapp/departments. No
'Access-Control-Allow-Origin' header is …Run Code Online (Sandbox Code Playgroud) 我看到的大多数示例都是一个服务的路由定义.
所以这样的事情:
zuul:
routes:
myserver:
path: /mypath/**
Run Code Online (Sandbox Code Playgroud)
让我们说我想将几条路由路由到一个服务,所以实际上它会是这样的:
zuul:
routes:
myserver:
path: /mypath/**, /anotherpath/**
Run Code Online (Sandbox Code Playgroud)
配置文件中不允许这样做,也不允许两次使用相同的路由名称.有没有真正的方法来做到这一点?
Zuul和kong都是微服务架构中的一个很好的API网关层.这两者之间有什么重要的区别?
我一直在工作,spring现在想学习spring boot微服务。我了解microservice所有内容及其运作方式。在浏览文档时,我遇到了很多用于开发的东西microservices,spring boot而我对此非常困惑。
我列出了以下系统和问题:
services都将注册到eureka服务器,并且
microservices都是eureka客户端。现在,我的疑问是,没有API网关,此服务注册表是否有任何用途?这是为了了解服务注册表的实际使用。ZUULApi网关 -我知道ZUUL可以用作API网关,它基本上是一个负载均衡器,它调用与请求URL相对应的适当的微服务。这个假设正确吗?api网关将与Eureka交互以获得适当的微服务吗?
NGINX-我看过 NGINX还可以用作API网关吗?那可能吗?我也读了一些其他地方NGINX可以用作服务注册表,也可以作为尤里卡的替代品!因此哪个是对的?api网关或服务注册表,或两者兼而有之?我知道这nginx是一个网络服务器,reverse proxies可以进行强大的配置。
AWS api网关 -这也可以替代ZUUL吗?
丝带 -有什么ribbon用?我不明白!
AWS ALB-这也可以用于负载平衡。因此,如果有,我们是否需要ZUUL AWS ALB?
请帮忙
nginx amazon-web-services spring-boot microservices netflix-zuul
我正在使用spring cloud eureka和spring cloud zuul proxy,我想知道是否有任何方法可以在eureka服务器中注册新服务时添加dymanic zuul路由,或者添加路由的唯一方法是编辑application.yml文件和重启spring zuul应用程序
zuul:
ignoredPatterns: /**/admin/**
routes:
users: /myusers/**
Run Code Online (Sandbox Code Playgroud) netflix-zuul ×10
spring-cloud ×6
spring-boot ×4
java ×3
netflix ×2
consul ×1
jetty ×1
kong ×1
mashape ×1
nginx ×1
spring ×1