[IIS][.NETCore] IIS Reverse Proxy 後 RemoteIpAddress 取值錯誤 !?

今天試著把 ASP.NET Core 放在 Docker Container 再利用 IIS Reverse Proxy 來對外但發生 IP 取值錯誤的問題
Request.HttpContext.Connection.RemoteIpAddress.ToString() 總是取到 Docker Host 的 IP

奮鬥了數個小時終於找到了一篇可以用的解答 .net Core X Forwarded Proto not working

Startup.cs 加上這段即可

1
2
3
4
5
6
7
8
9
var forwardingOptions = new ForwardedHeadersOptions()
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
};
// its loopback by default
forwardingOptions.KnownNetworks.Clear();
forwardingOptions.KnownProxies.Clear();

app.UseForwardedHeaders(forwardingOptions);

原因是 .NETCore 預設只信任 127.0.0.1 傳送的 X-Forwarded-For,因為用了他台主機 Reverse Proxy 所以要調整信任清單,這樣就可以解決 IP 顯示不正確的問題。