chore: useBasePath("/api") & better local forwarded headers

refactor from workaround hack to idempotent solution
This commit is contained in:
2023-12-27 16:25:08 +01:00
parent c1cd056495
commit ea5bdd7f1e
4 changed files with 28 additions and 11 deletions
@@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Mvc;
namespace Kemkas.Web.Controllers;
[ApiController]
[Route("api/[controller]")]
[Route("[controller]")]
public class CharacterController(
ICharacterValidationService validationService,
ICharacterDtoToDbModelService dtoToDbModelService,
+1 -1
View File
@@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc;
namespace Kemkas.Web.Controllers;
[Route("api/[controller]")]
[Route("[controller]")]
[ApiController]
public class UserController : ControllerBase
{
+14 -3
View File
@@ -1,3 +1,4 @@
using System.Net;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using Kemkas.Web.Config;
@@ -7,7 +8,9 @@ using Kemkas.Web.Db.Models;
using Kemkas.Web.Services.Character;
using Kemkas.Web.Services.Identity;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.AspNetCore.Identity.UI.Services;
using IPNetwork = Microsoft.AspNetCore.HttpOverrides.IPNetwork;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
@@ -42,11 +45,21 @@ builder.Services.AddRazorPages();
builder.Services.AddCharacterServices();
var app = builder.Build();
app.UsePathBase("/api");
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedForHeaderName = "X-Forwarded-For",
ForwardedHostHeaderName = "X-Forwarded-Host",
ForwardedProtoHeaderName = "X-Forwarded-Proto",
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedHost | ForwardedHeaders.XForwardedProto,
KnownNetworks = { new IPNetwork(new IPAddress([0,0,0,0]), 0) }
});
app.UseMigrationsEndPoint();
app.UseDeveloperExceptionPage();
}
else
{
@@ -60,8 +73,6 @@ await using (var scope = app.Services.CreateAsyncScope())
await db.Database.MigrateAsync();
}
app.UseForwardedHeaders();
app.UseStaticFiles();
app.UseRouting();
@@ -70,7 +81,7 @@ app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "/api/{controller}/{action=Index}/{id?}");
pattern: "/{controller}/{action=Index}/{id?}");
app.MapRazorPages();
app.MapFallbackToFile("index.html");
+11 -5
View File
@@ -57,7 +57,18 @@ http {
}
location /Identity/ {
proxy_pass_request_headers on;
proxy_set_header X-Forwarded-For "$proxy_add_x_forwarded_for";
proxy_set_header X-Forwarded-Proto "$scheme";
proxy_set_header X-Forwarded-Host "$http_host";
proxy_pass https://backend;
}
location /api/ {
proxy_pass_request_headers on;
proxy_set_header X-Forwarded-For "$proxy_add_x_forwarded_for";
proxy_set_header X-Forwarded-Proto "$scheme";
proxy_set_header X-Forwarded-Host "$http_host";
proxy_pass https://backend;
proxy_pass_request_headers on;
}
@@ -74,10 +85,5 @@ http {
proxy_pass https://backend;
proxy_pass_request_headers on;
}
location /api/ {
proxy_pass https://backend;
proxy_pass_request_headers on;
}
}
}