【发布时间】:2020-03-18 12:53:41
【问题描述】:
我正在开发一个 API 网关来将请求重定向到某个微服务。 这是 application.properties 文件的一部分:
# _____ _____.__
# / _ \ ______ ______ ____ ____ _____/ ____\__| ____
# / /_\ \\____ \\____ \ _/ ___\/ _ \ / \ __\| |/ ___\
# / | \ |_> > |_> > \ \__( <_> ) | \ | | / /_/ >
# \____|__ / __/| __/ \___ >____/|___| /__| |__\___ /
# \/|__| |__| \/ \/ /_____/
server.port=8088
server.servlet.context-path=/PetApp
# __________ .__ _________ _____.__
# \____ /__ __ __ __| | \_ ___ \ ____ _____/ ____\__| ____
# / /| | \ | \ | / \ \/ / _ \ / \ __\| |/ ___\
# / /_| | / | / |__ \ \___( <_> ) | \ | | / /_/ >
# /_______ \____/|____/|____/ \______ /\____/|___| /__| |__\___ /
# \/ \/ \/ /_____/
#Routes for Auth
zuul.routes.tokenGenerator.path=/auth/login
zuul.routes.tokenGenerator.url=http://localhost:8086/PetApp_Auth/auth/generateToken
zuul.routes.tokenGenerator.stripPrefix=false
我正在尝试将请求从 API 网关 (http://localhost:8080/PetApp/auth/login) 重定向到在 (http://localhost:8086/PetApp_Auth/auth/generateToken) 中运行的服务 我已经通过邮递员将请求直接发送到微服务,并且效果很好。
重要提示:我没有添加任何授权标头,因为此端点没有被证券化(而且它工作得很好),但我的身份验证微服务中的其余 API 被证券化了
但是当我尝试通过 API 网关发送请求时,我得到以下信息:
可以看出,请求被重定向到正确的微服务(身份验证服务)而不是正确的 URL,因为我对正在显示的其余端点和 URL 有一个例外。
我也尝试将之前生成的授权令牌放入标头中发送,但我得到相同的未授权
我做错了什么?
【问题讨论】:
-
为什么不使用 nginx 或 varnish 来实现这个目的?您无需任何编码即可设置平衡、ESI 等。您正在做的是复制现有软件的功能,同时在系统中创建额外的引导项。如果您的 API 网关除了转发请求之外还做了一些额外的事情,那么只需使其成为您的微服务军队的一部分,它位于反向代理后面,负责平衡和路由工作。
标签: java spring-boot url netflix-zuul api-gateway