我有一个使用 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
希望这能解决您的问题。