拓展spring cloud gateway 动态路由解析及302问题

1.动态路由 需求:根据指定内网服务的ip和端口信息提供反向代理。

原内网服务是发布到外网上,通过业务逻辑在前端进行整合。后需要将这些内网服务隐藏到主服务之后。

第一版是通过自写的netty进行实现。后改用spring cloud gateway进行实现。以方便后续维护。

实现效果:

  • innerhost1.innerport1.proxy.domain.com 访问 内网服务1、innerhost2.innerport2.proxy.domain.com 访问 内网服务2;
  • innerhost:内网服务地址 innerport 内网服务端口。

eg:127.0.0.1.8080.dev.localhost TO 127.0.0.1:8080

思路:参照gateway lb :RouteToRequestUrlFilter实现。

/**
 * route根据predicates配置进行匹配。因此只要制定符合需求的predicates便可获得对应route及其uri。
 */
RoutePredicateHandlerMapping.lookupRoute(ServerWebExchange exchange):Mono<Route>

/**
 * 在filter中 RouteToRequestUrlFilter将route.uri解析并存储到 ServerWebExchange.getAttributes():GATEWAY_REQUEST_URL_ATTR 中
 因此只要proxyfilter在RouteToRequestUrlFilter之后运行即可直接使用该uri
 */
RouteToRequestUrlFilter.filter(ServerWebExchange exchange, GatewayFilterChain chain):Mono<Void>

实现:

package.component:
@Component
public class ProxyFilter implements GlobalFilter, Ordered {
	@Override
	public int getOrder() {
	// 定义在RouteToRe
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值