【问题标题】:C#: get Client-IP after ProxyPassC#:在 ProxyPass 之后获取 Client-IP
【发布时间】:2011-01-03 16:39:08
【问题描述】:

我的 ASP.NET 应用程序检查调用客户端的 IP。

但我必须将它托管在 Linux-Box 后面,Apache 将它重定向到运行 IIS 的内部 Windows 2003 服务器,例如:

ProxyPass /srs http://192.168.21.15/srs/

其中 192.168.21.15 是 Windows 服务器的内部 IP,192.168.21.1 是从互联网获取请求的 Linux 机器的内部 IP。

现在,在我看来,转发到 w.x.y.15 的来自互联网的请求似乎都来自 w.x.y.1

如何保留(或转发)原始 IP?

我听说过 X-forwarded-for... 但是如何在 C# 中检索这个值??

谢谢你, 莱因哈德

【问题讨论】:

    标签: c# apache ip-address ip forward


    【解决方案1】:

    一般而言,如果代理服务器修改了 IP 地址信息,则原始 IP 地址存储在 HTTP_X_FORWARDED_FOR 服务器变量中。要使用 C# 在 ASP.NET 中访问它,您可以使用:

    Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
    

    【讨论】:

      【解决方案2】:

      对于java候选人,您可以使用:

      String ipAddress=request.getHeader("X-Forwarded-For");
      

      如果您将使用 request.getRemoteAddr(),如果您的部署服务器上存在 Apache 重定向,它可能会返回 127.0.0.1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-20
        • 1970-01-01
        • 2012-05-08
        相关资源
        最近更新 更多