Add PublicUrl support for reverse proxy handling
Build and Push Docker Image / build-and-push (push) Successful in 20s
Build and Push Docker Image / build-and-push (push) Successful in 20s
Introduced a `PUBLIC_URL` environment variable to configure the public URL for OAuth callbacks and reverse proxy scenarios. Updated `Program.cs` to rewrite request scheme and host based on `PublicUrl`. Replaced `Microsoft.AspNetCore.Components.Authorization` with `Microsoft.AspNetCore.Components.Authentication`. Added `PublicUrl` to `appsettings.json` with a default empty value.
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
# Required for SQL Server container and app DB connection
|
# Required for SQL Server container and app DB connection
|
||||||
SA_PASSWORD=ChangeThisToAStrongPassword123!
|
SA_PASSWORD=ChangeThisToAStrongPassword123!
|
||||||
|
|
||||||
|
# Public URL of the site (used to fix OAuth callbacks behind a reverse proxy)
|
||||||
|
PUBLIC_URL=https://yourdomain.example.com
|
||||||
|
|
||||||
# Optional OAuth (leave empty to disable provider at runtime)
|
# Optional OAuth (leave empty to disable provider at runtime)
|
||||||
GOOGLE_CLIENT_ID=
|
GOOGLE_CLIENT_ID=
|
||||||
GOOGLE_CLIENT_SECRET=
|
GOOGLE_CLIENT_SECRET=
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ services:
|
|||||||
- Smtp__Password=${SMTP_PASSWORD}
|
- Smtp__Password=${SMTP_PASSWORD}
|
||||||
- Smtp__FromAddress=${SMTP_FROM_ADDRESS}
|
- Smtp__FromAddress=${SMTP_FROM_ADDRESS}
|
||||||
- Smtp__FromName=${SMTP_FROM_NAME}
|
- Smtp__FromName=${SMTP_FROM_NAME}
|
||||||
|
- PublicUrl=${PUBLIC_URL}
|
||||||
depends_on:
|
depends_on:
|
||||||
- mssql
|
- mssql
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
|
using System.Data;
|
||||||
using BirthList.Infrastructure.Persistence;
|
using BirthList.Infrastructure.Persistence;
|
||||||
using BirthList.Web.Authorization;
|
using BirthList.Web.Authorization;
|
||||||
|
using BirthList.Web.Components;
|
||||||
|
using BirthList.Web.Components.Account;
|
||||||
using BirthList.Web.Configuration;
|
using BirthList.Web.Configuration;
|
||||||
|
using BirthList.Web.Data;
|
||||||
using BirthList.Web.Features.Registries;
|
using BirthList.Web.Features.Registries;
|
||||||
using BirthList.Web.Services;
|
using BirthList.Web.Services;
|
||||||
using Microsoft.AspNetCore.Components.Authorization;
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
@@ -9,10 +13,6 @@ using Microsoft.AspNetCore.Identity;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
using Microsoft.EntityFrameworkCore.Storage;
|
using Microsoft.EntityFrameworkCore.Storage;
|
||||||
using BirthList.Web.Components;
|
|
||||||
using BirthList.Web.Components.Account;
|
|
||||||
using BirthList.Web.Data;
|
|
||||||
using System.Data;
|
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
@@ -159,6 +159,20 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
app.UseForwardedHeaders();
|
app.UseForwardedHeaders();
|
||||||
|
|
||||||
|
var publicUrl = app.Configuration["PublicUrl"];
|
||||||
|
if (!string.IsNullOrWhiteSpace(publicUrl) && Uri.TryCreate(publicUrl, UriKind.Absolute, out var publicUri))
|
||||||
|
{
|
||||||
|
app.Use(async (context, next) =>
|
||||||
|
{
|
||||||
|
context.Request.Scheme = publicUri.Scheme;
|
||||||
|
context.Request.Host = publicUri.IsDefaultPort
|
||||||
|
? new Microsoft.AspNetCore.Http.HostString(publicUri.Host)
|
||||||
|
: new Microsoft.AspNetCore.Http.HostString(publicUri.Host, publicUri.Port);
|
||||||
|
await next();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
app.UseHttpsRedirection();
|
app.UseHttpsRedirection();
|
||||||
|
|
||||||
app.UseStaticFiles();
|
app.UseStaticFiles();
|
||||||
|
|||||||
@@ -38,5 +38,6 @@
|
|||||||
"Microsoft.AspNetCore": "Warning"
|
"Microsoft.AspNetCore": "Warning"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"AllowedHosts": "*"
|
"AllowedHosts": "*",
|
||||||
|
"PublicUrl": ""
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user