我们有一个Nginx反向代理集,用于发送来自的流量
https://ws.mydomain.com/staging/service.asmx
到我们的IIS服务器10:
http://localmachine/ws/staging/service.asmx
(发送ws.mydomain.com作为主机头(
问题是,当我们调用https://ws.mydomain.com/staging/service.asmx?WSDL
时,自动生成的wsdl显示一个MIXED端点:
<soap:address location="http://ws.mydomain.com/ws/staging/service.asmx"/>
而不是
<soap:address location="https://ws.mydomain.com/staging/service.asmx"/>
我在谷歌上搜索了很多,但我找不到一种方法来通过web.config强制指定一个特定的URL,或者指定一个基地址(BEFORE-service.asmx的所有内容(
在Apache
服务器中,当Apache用作反向代理时,可以通过ProxyPreserveHost
指令实现该功能
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehostNginx
中没有ProxyPreserveHost
,但您可以尝试proxy_set_header
指令。
proxy_set_header Host $host;
请参阅以下链接
https://serverfault.com/questions/87056/when-nginx-is-configured-as-reverse-proxy-can-it-rewrite-the-host-header-to-the
https://www.nginx.com/resources/wiki/start/topics/examples/likeapache/
此外,这里还有一个重写WSDL位置属性的变通方法
反向代理背后的WebService
如果有什么我可以帮助的,请随时告诉我。