<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://logicwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=Swagger_service_url_behind_reverse_proxy</id>
		<title>Swagger service url behind reverse proxy - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://logicwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=Swagger_service_url_behind_reverse_proxy"/>
		<link rel="alternate" type="text/html" href="https://logicwiki.co.uk/index.php?title=Swagger_service_url_behind_reverse_proxy&amp;action=history"/>
		<updated>2026-06-01T23:32:17Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://logicwiki.co.uk/index.php?title=Swagger_service_url_behind_reverse_proxy&amp;diff=2432&amp;oldid=prev</id>
		<title>AliIybar: Created page with &quot;Category:Swagger Category:NGINX Category:Dotnet  If you’re deploying apps behind a reverse proxy such as nginx you might find that the service url is incorrect....&quot;</title>
		<link rel="alternate" type="text/html" href="https://logicwiki.co.uk/index.php?title=Swagger_service_url_behind_reverse_proxy&amp;diff=2432&amp;oldid=prev"/>
				<updated>2024-12-10T17:10:17Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/index.php?title=Category:Swagger&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:Swagger (page does not exist)&quot;&gt;Category:Swagger&lt;/a&gt; &lt;a href=&quot;/index.php?title=Category:NGINX&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:NGINX (page does not exist)&quot;&gt;Category:NGINX&lt;/a&gt; &lt;a href=&quot;/index.php?title=Category:Dotnet&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:Dotnet (page does not exist)&quot;&gt;Category:Dotnet&lt;/a&gt;  If you’re deploying apps behind a reverse proxy such as nginx you might find that the service url is incorrect....&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Swagger]]&lt;br /&gt;
[[Category:NGINX]]&lt;br /&gt;
[[Category:Dotnet]]&lt;br /&gt;
&lt;br /&gt;
If you’re deploying apps behind a reverse proxy such as nginx you might find that the service url is incorrect. It may have redirected from http to https for example, leading to the window.location property having the scheme https and the swagger service url having the scheme http. This mismatch will cause the browser to block requests unless CORS response headers are set.&lt;br /&gt;
&lt;br /&gt;
The solution :&lt;br /&gt;
&lt;br /&gt;
Configure the middleware with ForwardedHeadersOptions to forward the X-Forwarded-For and X-Forwarded-Proto headers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Forwarded Headers Middleware order ==&lt;br /&gt;
Forwarded Headers Middleware should run before other middleware. This ordering ensures that the middleware relying on forwarded headers information can consume the header values for processing. Forwarded Headers Middleware can run after diagnostics and error handling, but it must be run before calling UseHsts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using Microsoft.AspNetCore.HttpOverrides;&lt;br /&gt;
&lt;br /&gt;
var builder = WebApplication.CreateBuilder(args);&lt;br /&gt;
&lt;br /&gt;
builder.Services.AddRazorPages();&lt;br /&gt;
builder.Services.Configure&amp;lt;ForwardedHeadersOptions&amp;gt;(options =&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    options.ForwardedHeaders =&lt;br /&gt;
        ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var app = builder.Build();&lt;br /&gt;
&lt;br /&gt;
if (!app.Environment.IsDevelopment())&lt;br /&gt;
{&lt;br /&gt;
    app.UseExceptionHandler(&amp;quot;/Error&amp;quot;);&lt;br /&gt;
    app.UseForwardedHeaders();&lt;br /&gt;
    app.UseHsts();&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
    app.UseDeveloperExceptionPage();&lt;br /&gt;
    app.UseForwardedHeaders();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
app.UseHttpsRedirection();&lt;br /&gt;
app.UseStaticFiles();&lt;br /&gt;
&lt;br /&gt;
app.UseAuthorization();&lt;br /&gt;
&lt;br /&gt;
app.MapRazorPages();&lt;br /&gt;
&lt;br /&gt;
app.Run();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, call UseForwardedHeaders before diagnostics:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using Microsoft.AspNetCore.HttpOverrides;&lt;br /&gt;
&lt;br /&gt;
var builder = WebApplication.CreateBuilder(args);&lt;br /&gt;
&lt;br /&gt;
builder.Services.AddRazorPages();&lt;br /&gt;
builder.Services.Configure&amp;lt;ForwardedHeadersOptions&amp;gt;(options =&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    options.ForwardedHeaders =&lt;br /&gt;
        ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var app = builder.Build();&lt;br /&gt;
&lt;br /&gt;
app.UseForwardedHeaders();&lt;br /&gt;
&lt;br /&gt;
if (!app.Environment.IsDevelopment())&lt;br /&gt;
{&lt;br /&gt;
    app.UseExceptionHandler(&amp;quot;/Error&amp;quot;);&lt;br /&gt;
    app.UseHsts();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
app.UseHttpsRedirection();&lt;br /&gt;
app.UseStaticFiles();&lt;br /&gt;
&lt;br /&gt;
app.UseAuthorization();&lt;br /&gt;
&lt;br /&gt;
app.MapRazorPages();&lt;br /&gt;
&lt;br /&gt;
app.Run();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nginx configuration ==&lt;br /&gt;
To forward the X-Forwarded-For and X-Forwarded-Proto headers,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
map $http_connection $connection_upgrade {&lt;br /&gt;
  &amp;quot;~*Upgrade&amp;quot; $http_connection;&lt;br /&gt;
  default keep-alive;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
  listen        80;&lt;br /&gt;
  server_name   example.com *.example.com;&lt;br /&gt;
  location / {&lt;br /&gt;
      proxy_pass         http://127.0.0.1:5000/;&lt;br /&gt;
      proxy_http_version 1.1;&lt;br /&gt;
      proxy_set_header   Upgrade $http_upgrade;&lt;br /&gt;
      proxy_set_header   Connection $connection_upgrade;&lt;br /&gt;
      proxy_set_header   Host $host;&lt;br /&gt;
      proxy_cache_bypass $http_upgrade;&lt;br /&gt;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
      proxy_set_header   X-Forwarded-Proto $scheme;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
-------------------------------------&lt;br /&gt;
see : [https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-6.0#forwarded-headers-middleware-order https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-6.0#forwarded-headers-middleware-order]&lt;/div&gt;</summary>
		<author><name>AliIybar</name></author>	</entry>

	</feed>