配置ASP.NET Core以与代理服务器和负载平衡器一起使用

时间:2018-07-08 03:55:02

标签: c# asp.net-core asp.net-core-2.0

我已经按照this Microsoft's documents page所述的所有步骤进行操作,以便能够通过调用HttpContext.Connection.RemoteIpAddress在IIS托管的应用程序中获取远程客户端的IP地址,但是我一直在获取{{1 }}。只有一种奇怪的情况可以为我获取远程客户端的IP地址,而这是通过下面的服务配置代码来完成的,其中::1ForwardedForHeaderName初始化,这对我来说没有任何意义!

X-Forwarded-For-Custom-Header-Name

完整的source code is found in this github repo,我想知道必须执行什么确切的更改才能通过删除“ X-Forwarded-For-Custom-Header-Name”成功获取远程IP地址,以及为什么要这样一个字符串获取我的IP地址!

2 个答案:

答案 0 :(得分:1)

这个想法是,X-Forwarded-For-Custom-Header-Name应该用自定义标头名称替换,以防您的代理/负载均衡器不使用标准的X-Forwarded-For标头,而是使用其他标头。

虽然X-Forwarded-For是此处的实际标准,但是某些代理/负载平衡器使用另一个标头。在这种情况下,您可以将其设置为它使用的值,例如X-Real-IP

在这种情况下,您必须查看设置中使用了哪些标头,然后相应地配置应用程序。

使用默认的托管模型在IIS中托管时(dotnet publish应生成适当的web.config文件),转发已由IIS中间件设置并处理。

答案 1 :(得分:0)

除非您希望代理在与通常的package main import ( "log" "reflect" ) if reflect.TypeOf([]string{"a"}).Elem() == reflect.String { log.Println("success") } if reflect.TypeOf([]int{1}).Elem() == reflect.Int{ log.Println("success") } if reflect.TypeOf([]float64{1.00}).Elem() == reflect.Float64 { log.Println("success") } 不同的标头中转发原始IP地址,否则不必指定X-Forwarded-For,而是将其配置为:

ForwardedForHeaderName