【问题标题】:Acquire client IP address from Windows Azure service从 Windows Azure 服务获取客户端 IP 地址
【发布时间】:2014-04-03 15:31:33
【问题描述】:

我们有几个使用服务堆栈构建的 Web 服务,并作为自托管可执行文件部署到多个 Windows Azure 服务器。此设置是从 Amazon EC2 迁移而来的。

我们面临的问题是服务大量使用 IP 地址地理解析(即将 IP 地址映射到国家/地区)。但是在 Azure 设置下,所有请求似乎都来自服务器自己的外部 IP,即 LAN IP。

例如,如果虚拟机的 IP 地址是 10.0.0.4,则所有 HTTP 似乎都源自 10.0.0.4。

有大量设置和功能使用与亚马逊不同的术语。我们已经尝试研究了几件事(例如直接服务器返回),但到目前为止我们还不够。

实现最简单的“端口转发”以使服务端口直接打开并且请求似乎源自其实际来源的正确方法是什么?

【问题讨论】:

  • 这个问题最好在服务器故障上提出,因为它是关于配置 Azure 服务器,而不是专门关于对 ServiceStack 服务进行编程。 如果您有兴趣以编程方式解决此问题,我建议您检查源 IP 请求的 x-forwarded-for 标头
  • 没有 X-Forwarded-For 标头,ServiceStack aleady 使用它,如果没有,我们会在我们的代码中使用。我正在倾倒所有的标题 - 它不存在。我猜是因为它不是 HTTP 代理,而是一些奇怪的东西,它是直接的 TCP 转发,但仍然显示为 NAT,这与普通端口转发不同。无论如何,question moved.

标签: c# azure servicestack


【解决方案1】:

我已取消删除问题并回答了它,因为它毕竟是一个小的 ServiceStack 问题,并且将来可能会帮助其他人:

不要使用UserHostAddress,而是使用RemoteIp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2012-12-01
    相关资源
    最近更新 更多