2014-04-03 129 views
0

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

我们面临的问题是,该服务使大量使用的IP地址地理分辨率(即地图IP地址的国家/地区)。但是,在Azure设置下,所有请求似乎都源自服务器自己的外部IP,这是一个LAN IP。

例如,如果虚拟机的IP地址是10.0.0.4,所有HTTP似乎从10.0.0.4发起。

有吨的设置和功能使用不同的术语来亚马逊。我们试图研究几件事情(例如直接服务器返回),但到目前为止我们已经做了很多。

什么是实现最简单的“端口转发”,使得服务端口是直接打开并请求显示从他们的确切起源发起的正确方法是什么?

+0

这个问题将得到更好的要求对服务器故障,因为它是有关配置Azure的服务器,并没有专门对编程的ServiceStack服务。 *如果您有兴趣以编程方式解决此问题,我会建议检查针对源IP的请求的“x-forwarded-for”标头* – Scott

+0

没有X-Forwarded-For标头,ServiceStack使用哪个标头,if它没有,我们会在我们的代码中。我倾倒所有的标题 - 它不在那里。我猜测,因为这不是HTTP代理的实际操作,而是一些奇怪的事情,它是直接的TCP转发,但仍然出现NAT,与普通的端口转发不同。 无论如何,[问题移动](http://serverfault.com/questions/586458/acquire-client-ip-address-from-windows-azure-service)。 –

回答

1

我已取消删除的问题和回答,因为事实证明,它毕竟是一个小ServiceStack疑难杂症,并且可能帮助别人,将来别人:

不要使用UserHostAddress,用RemoteIp代替。

相关问题