一:问题描述
公司用spring-gateway作为业务网关,因为有很多属地项目,也有很多其他部门需要用的网关,所以很多地方都克隆中台网关在自己部门或者属地部署一份,起初发现,网关转发到网关后,前面一层网关去请求接口返回400,这时候去后面网关看日志,发现并没有任何日志,当时通过k8s日志也未发现任何日志
二:问题原因
后端网关接口直接用postman或者浏览器调用完全没有问题,通过对比请求header和参数,完全用postman模拟第一层网关操作,重新400现象,所以逐渐去除header参数,去后面网关请求,发现host和forward-host去除后可以正常访问,中间重新设置host,或者在spring-gateway重写host或者在netty层重写host相关参数,依然无效
三:解决办法
spring-gateway加入一下配置,正常访问
spring.cloud.gateway.x-forwarded.host-enabled = false
spring.cloud.gateway.x-forwarded.port-enabled = false
spring.cloud.gateway.x-forwarded.proto-enabled = false
spring.cloud.gateway.x-forwarded.for-enabled = false
网友评论