Skip to content

Commit 92aff30

Browse files
authored
chore(swagger): fix swagger to work correctly behind the proxy - use X-Forwarded-* headers
domaindrivendev/Swashbuckle.AspNetCore#1298 (comment) https://docs.humio.com/integrations/proxies/nginx/
1 parent e0908e7 commit 92aff30

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

ProjectTemplates/ReferenceProject/Configuration/MiddlewareConfig.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using Microsoft.AspNetCore.Builder;
2+
using Microsoft.OpenApi.Models;
3+
using System.Collections.Generic;
24

35
namespace ReferenceProject
46
{
@@ -13,7 +15,22 @@ public static class MiddlewareConfig
1315
public static IApplicationBuilder UseSwaggerWithOptions(this IApplicationBuilder app)
1416
{
1517
// Enable middleware to serve generated Swagger as a JSON endpoint.
16-
SwaggerBuilderExtensions.UseSwagger(app);
18+
app.UseSwagger(c =>
19+
{
20+
c.PreSerializeFilters.Add((swaggerDoc, httpRequest) =>
21+
{
22+
if (!httpRequest.Headers.ContainsKey("X-Forwarded-Host")) return;
23+
24+
var serverUrl = $"{httpRequest.Headers["X-Forwarded-Proto"]}://" +
25+
$"{httpRequest.Headers["X-Forwarded-Host"]}" +
26+
$"{httpRequest.Headers["X-Forwarded-Prefix"]}";
27+
28+
swaggerDoc.Servers = new List<OpenApiServer>()
29+
{
30+
new OpenApiServer { Url = serverUrl }
31+
};
32+
});
33+
});
1734

1835
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
1936
// specifying the Swagger JSON endpoint.

0 commit comments

Comments
 (0)