using Elternbeirat.Web.Components; using Microsoft.AspNetCore.HttpOverrides; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddRazorComponents(); var app = builder.Build(); // NPM terminiert TLS und ist der einzige Weg zum Container (kein Port-Mapping // im Produktivbetrieb, siehe plan.md AE-4). Ohne UseForwardedHeaders sieht die // App jede Anfrage als HTTP und mit der Proxy-IP statt der Client-IP. // KnownNetworks/KnownProxies bewusst geleert, weil ausschliesslich NPM den // Container erreicht. app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto, KnownIPNetworks = { }, KnownProxies = { } }); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error", createScopeForErrors: true); // Kein UseHsts() und kein UseHttpsRedirection(): NPM setzt HSTS und // terminiert TLS. Beides hier wuerde hinter dem Proxy eine // Redirect-Schleife erzeugen (plan.md AE-4). } app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true); app.UseAntiforgery(); app.MapStaticAssets(); app.MapRazorComponents(); app.Run();