using System.Net; using Microsoft.AspNetCore.HttpOverrides; using Ocelot.Cache.CacheManager; using Ocelot.DependencyInjection; using Ocelot.Middleware; using Ocelot.Provider.Polly; var builder = WebApplication.CreateBuilder(args); // ============================================================================== builder.Configuration.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true); builder.Configuration.AddJsonFile(Path.Combine("Config", "system.json"), optional: true); // ============================================================================== builder.Services.AddOcelot(builder.Configuration) .AddCacheManager(x => x.WithDictionaryHandle()) .AddPolly(); // ============================================================================== // ============================================================================== builder.Services.AddHealthChecks(); // ============================================================================== // ============================================================================== builder.Services.Configure(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; options.KnownProxies.Clear(); options.KnownNetworks.Clear(); options.KnownProxies.Add(IPAddress.Parse("127.0.0.1")); options.KnownProxies.Add(IPAddress.Parse("::1")); // IPv6 // options.KnownProxies.Add(IPAddress.Parse("172.17.0.1")); // options.KnownProxies.Add(IPAddress.Parse("172.18.0.1")); options.KnownProxies.Add(IPAddress.Parse("172.19.0.1")); }); // ============================================================================== // ============================================================================== var app = builder.Build(); // ============================================================================== // ============================================================================== app.UseForwardedHeaders(); // ============================================================================== // ============================================================================== app.MapHealthChecks("/health"); // ============================================================================== // ============================================================================== await app.UseOcelot(); app.Run();