Cloudflare 真实IP

如果我们的整个系统还有用 Cloudflare的CDN的话。 这个时候我们想获得真实的IP 就需要编辑 ingress-nginx-controller的 configmap

kubectl edit configmap ingress-nginx-controller

加上 enable-real-ip 和 real_ip_header 如下:

apiVersion: v1
data:
  enable-real-ip: "true"
  server-snippet: |
    real_ip_header CF-Connecting-IP;
kind: ConfigMap
metadata:

这样 cloudflare 的 CF-Connecting-IP 就会放到 x-Forwarded-For x-Real-IP 的 http header里面。程序通过这两个可以读到真实的IP

Asp.net UseForwardedHeaders

在Asp.net core当中还可以设置 UseForwardedHeaders 这样获取IP 和 判断是不是https的代码都不需要改动。

        public void Configure(IApplicationBuilder application, IHostingEnvironment environment)
        {
            var options = new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders = ForwardedHeaders.All
				// ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto 只用这两个的话。swagger会出错
            };
            options.KnownNetworks.Clear();
            options.KnownProxies.Clear();
            application.UseForwardedHeaders(options);
			
			// ...
		}
最近更新的
...