🐛 trying to fix IP issue
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using dotnet_etcd.interfaces;
|
using dotnet_etcd.interfaces;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Yarp.ReverseProxy.Configuration;
|
using Yarp.ReverseProxy.Configuration;
|
||||||
@@ -15,11 +16,11 @@ public class WellKnownController(
|
|||||||
{
|
{
|
||||||
public class IpCheckResponse
|
public class IpCheckResponse
|
||||||
{
|
{
|
||||||
public string? RemoteIp { get; set; }
|
[JsonPropertyName("remote_ip")] public string? RemoteIp { get; set; }
|
||||||
public string? XForwardedFor { get; set; }
|
[JsonPropertyName("x_forwarded_for")] public string? XForwardedFor { get; set; }
|
||||||
public string? XForwardedProto { get; set; }
|
[JsonPropertyName("x_forwarded_proto")] public string? XForwardedProto { get; set; }
|
||||||
public string? XForwardedHost { get; set; }
|
[JsonPropertyName("x_forwarded_host")] public string? XForwardedHost { get; set; }
|
||||||
public string? XRealIp { get; set; }
|
[JsonPropertyName("x_real_ip")] public string? XRealIp { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("ip-check")]
|
[HttpGet("ip-check")]
|
||||||
|
@@ -171,7 +171,7 @@ public class RegistryProxyConfigProvider : IProxyConfigProvider, IDisposable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Host-based routing
|
// Host-based routing
|
||||||
if (domainMappings.TryGetValue(serviceName, out var domain))
|
if (domainMappings.TryGetValue(serviceName, out var domain) && domain is not null)
|
||||||
{
|
{
|
||||||
var hostRoute = new RouteConfig
|
var hostRoute = new RouteConfig
|
||||||
{
|
{
|
||||||
@@ -181,7 +181,7 @@ public class RegistryProxyConfigProvider : IProxyConfigProvider, IDisposable
|
|||||||
{
|
{
|
||||||
Hosts = [domain],
|
Hosts = [domain],
|
||||||
Path = "/{**catch-all}"
|
Path = "/{**catch-all}"
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
routes.Add(hostRoute);
|
routes.Add(hostRoute);
|
||||||
_logger.LogInformation(" Added Host-based Route: {Host}", domain);
|
_logger.LogInformation(" Added Host-based Route: {Host}", domain);
|
||||||
@@ -196,7 +196,7 @@ public class RegistryProxyConfigProvider : IProxyConfigProvider, IDisposable
|
|||||||
Transforms = new List<Dictionary<string, string>>
|
Transforms = new List<Dictionary<string, string>>
|
||||||
{
|
{
|
||||||
new() { { "PathRemovePrefix", $"/{pathAlias}" } },
|
new() { { "PathRemovePrefix", $"/{pathAlias}" } },
|
||||||
new() { { "PathPrefix", "/api" } }
|
new() { { "PathPrefix", "/api" } },
|
||||||
},
|
},
|
||||||
Timeout = TimeSpan.FromSeconds(5)
|
Timeout = TimeSpan.FromSeconds(5)
|
||||||
};
|
};
|
||||||
@@ -236,4 +236,4 @@ public class RegistryProxyConfigProvider : IProxyConfigProvider, IDisposable
|
|||||||
_watchCts.Cancel();
|
_watchCts.Cancel();
|
||||||
_watchCts.Dispose();
|
_watchCts.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -24,7 +24,10 @@ public static class ServiceCollectionExtensions
|
|||||||
})
|
})
|
||||||
.AddTransforms(context =>
|
.AddTransforms(context =>
|
||||||
{
|
{
|
||||||
context.AddForwarded();
|
context.CopyRequestHeaders = true;
|
||||||
|
context.AddOriginalHost();
|
||||||
|
context.AddForwarded(action: ForwardedTransformActions.Set);
|
||||||
|
context.AddXForwarded(action: ForwardedTransformActions.Set);
|
||||||
});
|
});
|
||||||
|
|
||||||
services.AddRegistryService(configuration, addForwarder: false);
|
services.AddRegistryService(configuration, addForwarder: false);
|
||||||
|
@@ -13,9 +13,10 @@ public class IpCheckController : ControllerBase
|
|||||||
public string? XForwardedProto { get; set; }
|
public string? XForwardedProto { get; set; }
|
||||||
public string? XForwardedHost { get; set; }
|
public string? XForwardedHost { get; set; }
|
||||||
public string? XRealIp { get; set; }
|
public string? XRealIp { get; set; }
|
||||||
|
public string? Headers { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("ip-check")]
|
[HttpGet]
|
||||||
public ActionResult<IpCheckResponse> GetIpCheck()
|
public ActionResult<IpCheckResponse> GetIpCheck()
|
||||||
{
|
{
|
||||||
var ip = HttpContext.Connection.RemoteIpAddress?.ToString();
|
var ip = HttpContext.Connection.RemoteIpAddress?.ToString();
|
||||||
@@ -31,7 +32,8 @@ public class IpCheckController : ControllerBase
|
|||||||
XForwardedFor = xForwardedFor,
|
XForwardedFor = xForwardedFor,
|
||||||
XForwardedProto = xForwardedProto,
|
XForwardedProto = xForwardedProto,
|
||||||
XForwardedHost = xForwardedHost,
|
XForwardedHost = xForwardedHost,
|
||||||
XRealIp = realIp
|
XRealIp = realIp,
|
||||||
|
Headers = string.Join('\n', Request.Headers.Select(h => $"{h.Key}: {h.Value}")),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user