同步發表 Blog:[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
加上這段即可
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 顯示不正確的問題。