Guten Tag die Runde,
ich habe eine ASP.NET Core 2.2 Anwendung einen Docker Container hinter einen Nginx Proxy https://github.com/jwilder/nginx-proxy am laufen.
Jetzt habe ich das Problem das ich über Request.HttpContext.Connection.RemoteIpAddress nur die IP 172.20.0.1 zurückbekomme statt die eigentliche IP des Clients.
Ich habe bereits die folgende Zeilen in der Startup.cs hinzugefügt:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
und für den Nginx die /etc/nginx/proxy.conf angelegt mit den Inhalt;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
proxy_set_header Proxy "";
Habe ich was übersehen?
Hat da wer ein Anstoß für mich? 🙂
Gruß
Shojo
Ist UseForwardedHeaders
auch wirklich die erste registrierte Middleware, wie es auch die Dokumentation sagt?
Das beachten leider die meisten nicht...
Ansonsten verwende ich das Snippet hier:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.All,
ForwardLimit = null, // null = disable check
RequireHeaderSymmetry = false,
KnownProxies = { IPAddress.Parse("<IP Adresse 1>"), IPAddress.Parse("<IP Adresse n...>") },
});
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ja ich habe da die Doku sauber befolgt, aber dein Snippet brachte den gewünschten Erfolg 🙂
Ich danke dir für die Hilfe!