Skip to content

Instantly share code, notes, and snippets.

@MrAliev
Last active September 11, 2022 23:00
Show Gist options
  • Save MrAliev/84f8cc93c84781648cfb7553fbe0f82d to your computer and use it in GitHub Desktop.
Save MrAliev/84f8cc93c84781648cfb7553fbe0f82d to your computer and use it in GitHub Desktop.
ASP .Net SwaggerUI behind proxy-server with path route ( api.domain.com/SomeApi )
namespace SomeAPI
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var settings = new AppSettings();
builder.Configuration.GetSection(nameof(AppSettings)).Bind(settings);
builder.Services.AddSingleton(settings);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(config =>
{
config.SwaggerDoc("v1", new OpenApiInfo { Title = $"{settings.ApiName}", Version = "v1" });
});
var app = builder.Build();
app.UseStaticFiles();
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((swaggerDoc, request) =>
{
const string prefixHeader = "X-Forwarded-Prefix";
if (!request.Headers.ContainsKey(prefixHeader))
return;
var serverUrl = request.Headers[prefixHeader];
swaggerDoc.Servers = new List<OpenApiServer>
{
new() { Description = "API path behind ingress-nginx", Url = serverUrl }
};
});
});
app.UseSwaggerUI(config =>
{
config.RoutePrefix = string.Empty;
config.SwaggerEndpoint("swagger/v1/swagger.json", $"{settings.ApiName}");
});
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment