ソースを参照

😎调整服务代理时真实IP地址获取

zuohuaijun 2 年 前
コミット
54e1a34864
1 ファイル変更14 行追加11 行削除
  1. 14 11
      Admin.NET/Admin.NET.Web.Core/Startup.cs

+ 14 - 11
Admin.NET/Admin.NET.Web.Core/Startup.cs

@@ -81,15 +81,15 @@ public class Startup : AppStartup
         // ElasticSearch
         services.AddElasticSearch();
 
-        // 配置Nginx转发获取客户端真实IP
-        // 注1:如果负载均衡不是在本机通过 Loopback 地址转发请求的,一定要加上options.KnownNetworks.Clear()和options.KnownProxies.Clear()
-        // 注2:如果设置环境变量 ASPNETCORE_FORWARDEDHEADERS_ENABLED 为 True,则不需要下面的配置代码
-        services.Configure<ForwardedHeadersOptions>(options =>
-        {
-            options.ForwardedHeaders = ForwardedHeaders.All;
-            options.KnownNetworks.Clear();
-            options.KnownProxies.Clear();
-        });
+        //// 配置Nginx转发获取客户端真实IP
+        //// 注1:如果负载均衡不是在本机通过 Loopback 地址转发请求的,一定要加上options.KnownNetworks.Clear()和options.KnownProxies.Clear()
+        //// 注2:如果设置环境变量 ASPNETCORE_FORWARDEDHEADERS_ENABLED 为 True,则不需要下面的配置代码
+        //services.Configure<ForwardedHeadersOptions>(options =>
+        //{
+        //    options.ForwardedHeaders = ForwardedHeaders.All;
+        //    options.KnownNetworks.Clear();
+        //    options.KnownProxies.Clear();
+        //});
 
         // 限流服务
         services.AddInMemoryRateLimiting();
@@ -166,15 +166,18 @@ public class Startup : AppStartup
         if (env.IsDevelopment())
         {
             app.UseDeveloperExceptionPage();
-            app.UseForwardedHeaders();
         }
         else
         {
             app.UseExceptionHandler("/Home/Error");
-            app.UseForwardedHeaders();
             app.UseHsts();
         }
 
+        app.UseForwardedHeaders(new ForwardedHeadersOptions
+        {
+            ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
+        });
+
         app.Use(async (context, next) =>
         {
             context.Response.Headers.Add("Admin.NET", "Admin.NET");