我有一个使用 spring-WS 实现 WSDL 的微服务 (spring-boot)。 计划是使用 Zuul 通过网关服务器访问 WSDL。

从网关访问:http//192.168.1.5:8080/integration/ws/test.wsdl

Zuul路由在网关配置:

integration: 
  sensitive-headers: 
  path: /integration/** 
  url: http://localhost:9090 

返回的 WSDL 带有正确的端口号 (8080),但主机名不正确。也不会返回前缀“/integration”。

<wsdl:service name="TestPortService"> 
    <wsdl:port binding="tns:TestPortSoap11" name="TestPortSoap11"> 
         <soap:address location="http://localhost:8080/ws"/> 
    </wsdl:port> 
</wsdl:service> 

即使我手动设置 X-Forwarded-For header ,主机名似乎也永远不会改变。 [我在没有 Zuul 的情况下测试]。为了让 Spring-WS 在代理后面工作,我缺少什么?我在 Spring Boot 的应用程序属性中设置了 remote_ip_header & protocol_header。

请您参考如下方法:

Zuul 在默认转发请求之前,实际上会从请求中剥离代理前缀。对于个别服务,您可以使用 stripPrefix=false 关闭此行为,如下所示。如果你想要所有路由,那么 zuul.stripPrefix=false

application.yml 
 zuul: 
  routes: 
    users: 
      path: /myusers/** 
      stripPrefix: false 

希望这能解决您的问题。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!