YarpReverseProxy/Program.cs
2025-09-29 11:14:26 +08:00

43 lines
1.4 KiB
C#

using Serilog;
var builder = WebApplication.CreateBuilder(args);
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Configuration)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("Logs/log-.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
builder.Host.UseSerilog();
builder.Services.AddRequestTimeouts();
//非IIS托管时启用
if (!string.Equals(Environment.GetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES"), "Microsoft.AspNetCore.Server.IISIntegration", StringComparison.OrdinalIgnoreCase))
{
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.ListenAnyIP(443, listenOptions =>
{
var certPath = builder.Configuration["Kestrel:Certificates:Default:Path"];
var certPassword = builder.Configuration["Kestrel:Certificates:Default:Password"];
if (string.IsNullOrEmpty(certPath))
{
throw new InvalidOperationException("SSL证书路径未配置或为空");
}
listenOptions.UseHttps(certPath, certPassword);
});
serverOptions.ListenAnyIP(80);
});
}
builder.Services.AddReverseProxy()
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
var app = builder.Build();
app.UseSerilogRequestLogging();
app.UseRouting();
app.UseRequestTimeouts();
app.MapReverseProxy();
app.Run();