nginx.conf配置文件部分信息
server { listen 80; server_name www.luofenming.com; location / { proxy_pass http://localhost:8711; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_cache_bypass $http_upgrade; } }
C# 获取IP帮助类代码
using Microsoft.AspNetCore.Http; using System.Linq; namespace lqwvje { public static class GetHostIP { /// <summary> /// 获取客户Ip /// </summary> /// <param name="context"></param> /// <returns></returns> public static string GetClientUserIp(this HttpContext context) { var userHostAddress = context.Request.Headers["X-Forwarded-For"].FirstOrDefault(); if (string.IsNullOrEmpty(userHostAddress)) { //这个是直接IP,如果经过反向代理IP会变成代理机的,如果代理机就是本机就会变成127.0.0.1 userHostAddress = context.Connection.RemoteIpAddress.ToString(); } //最后判断获取是否成功,并检查IP地址的格式 if (!string.IsNullOrEmpty(userHostAddress) && IsIP(userHostAddress)) { return userHostAddress; } return "127.0.0.1"; } /// <summary> /// 检查IP地址格式 /// </summary> /// <param name="ip"></param> /// <returns></returns> public static bool IsIP(string ip) { return System.Text.RegularExpressions.Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"); } } }
获取IP调用
//Startup.cs 文件注册服务务 public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "lqwvje", Version = "v1" }); }); //注册下面服务 services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>(); } //下面是接口返回IP的方法 [Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { [HttpGet("GetIP")] public string GetIP() { HttpContextAccessor context = new HttpContextAccessor(); return GetHostIP.GetClientUserIp(context.HttpContext); } }
本文来自 www.luofenming.com