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

今天試著把 ASP.NET Core 放在 Docker 再利用 IIS Reverse Proxy 來對外時偶然間發現 IP 取值錯誤,利用 Request.HttpContext.Connection.RemoteIpAddress.ToString() 總是取到 Docker Host 的 IP!?

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

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

Startup.cs 加上這段即會信任所有來源

var forwardingOptions = new ForwardedHeadersOptions()
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
};
// its loopback by default
forwardingOptions.KnownNetworks.Clear(); 
forwardingOptions.KnownProxies.Clear();

app.UseForwardedHeaders(forwardingOptions);

 



這裡的資訊對您有用嗎?歡迎斗內給我