是否可以从 WCF 客户端获取负载均衡器后面的服务 IP?
Is it possible from WCF client to get the service IP behind a load balancer?
我知道一些从 WCF 服务获取客户端 IP 的方法,但我无法获取服务器 IP。
我可以对服务进行一些更改,因此它可以 return IP 地址,但我正在尝试在不修改服务的情况下执行此操作。
我的场景:
我通过 dns 调用服务,它在负载平衡中运行(例如 services.company.com,解析为 192.168.0.1),所以我不知道哪个服务器正在响应请求(192.168.0.10 或 192.168.0.11)。
出于日志目的,我想知道哪个服务器处理了我的请求。
我认为这可能是不可能的,但谁知道谁能帮助我或提供线索?
正如我所想,我找不到任何方法在不在服务器端进行更改的情况下从服务器获取 IP。
但我试图在不修改所有服务的情况下达到目标,我最终采用了这种方法:
https://www.iis.net/configreference/system.webserver/httpprotocol/customheaders
我向我的 IIS 服务器添加了一个 自定义 header,因此当我使用服务时,服务器会向 header 添加一个值,即我可以在客户端恢复。
基本上您可以在 IIS 管理器中添加自定义 header,或者您可以添加到配置文件,将这些行添加到 system.webServer
节点:
<httpProtocol>
<customHeaders>
<add name="X-ServerName" value="myServerNameOrIP" />
</customHeaders>
</httpProtocol>
它可以在服务器级别或特定于某些应用程序上完成。这解决了问题。
当然,我只是把它放在内部服务器上,我不希望我的外部客户端收到这些信息。
我知道一些从 WCF 服务获取客户端 IP 的方法,但我无法获取服务器 IP。
我可以对服务进行一些更改,因此它可以 return IP 地址,但我正在尝试在不修改服务的情况下执行此操作。
我的场景: 我通过 dns 调用服务,它在负载平衡中运行(例如 services.company.com,解析为 192.168.0.1),所以我不知道哪个服务器正在响应请求(192.168.0.10 或 192.168.0.11)。
出于日志目的,我想知道哪个服务器处理了我的请求。
我认为这可能是不可能的,但谁知道谁能帮助我或提供线索?
正如我所想,我找不到任何方法在不在服务器端进行更改的情况下从服务器获取 IP。 但我试图在不修改所有服务的情况下达到目标,我最终采用了这种方法:
https://www.iis.net/configreference/system.webserver/httpprotocol/customheaders
我向我的 IIS 服务器添加了一个 自定义 header,因此当我使用服务时,服务器会向 header 添加一个值,即我可以在客户端恢复。
基本上您可以在 IIS 管理器中添加自定义 header,或者您可以添加到配置文件,将这些行添加到 system.webServer
节点:
<httpProtocol>
<customHeaders>
<add name="X-ServerName" value="myServerNameOrIP" />
</customHeaders>
</httpProtocol>
它可以在服务器级别或特定于某些应用程序上完成。这解决了问题。
当然,我只是把它放在内部服务器上,我不希望我的外部客户端收到这些信息。