diff --git a/Kemkas.Web/Controllers/CharacterController.cs b/Kemkas.Web/Controllers/CharacterController.cs index 99a59a6..02c8ce8 100644 --- a/Kemkas.Web/Controllers/CharacterController.cs +++ b/Kemkas.Web/Controllers/CharacterController.cs @@ -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, diff --git a/Kemkas.Web/Controllers/UserController.cs b/Kemkas.Web/Controllers/UserController.cs index 6c11d68..50de060 100644 --- a/Kemkas.Web/Controllers/UserController.cs +++ b/Kemkas.Web/Controllers/UserController.cs @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc; namespace Kemkas.Web.Controllers; -[Route("api/[controller]")] +[Route("[controller]")] [ApiController] public class UserController : ControllerBase { diff --git a/Kemkas.Web/Program.cs b/Kemkas.Web/Program.cs index f02d4a1..61b09df 100644 --- a/Kemkas.Web/Program.cs +++ b/Kemkas.Web/Program.cs @@ -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"); diff --git a/Kemkas.Web/nginx.conf b/Kemkas.Web/nginx.conf index 6b9ef44..e31f974 100644 --- a/Kemkas.Web/nginx.conf +++ b/Kemkas.Web/nginx.conf @@ -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; - } } }