1、獲取客戶端IP地址實現方法(擴展類) 調用該方法: 2、解決Asp.Net Core2.0發佈到Ubuntu後不能正確獲取客戶IP解決辦法 本人站點用的是Nginx進行代理,而站點指向是本地Ip,不能正確獲得客戶的IP,這時就需要通過Nginx獲取到的IP傳遞給站點 Nginx的配置 重啟Ngi ...
1、獲取客戶端IP地址實現方法(擴展類)
1 using Microsoft.AspNetCore.Http; 2 using Microsoft.AspNetCore.Mvc.ModelBinding; 3 using System.Collections.Generic; 4 using System.Linq; 5 6 namespace WebApi.Controllers 7 { 8 /// <summary> 9 /// 擴展類 10 /// </summary> 11 public static class Extension 12 { 13 /// <summary> 14 /// 獲取客戶Ip 15 /// </summary> 16 /// <param name="context"></param> 17 /// <returns></returns> 18 public static string GetClientUserIp(this HttpContext context) 19 { 20 var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault(); 21 if (string.IsNullOrEmpty(ip)) 22 { 23 ip = context.Connection.RemoteIpAddress.ToString(); 24 } 25 return ip; 26 } 27 } 28 }
調用該方法:
var ip = HttpContext.GetClientUserIp();
2、解決Asp.Net Core2.0發佈到Ubuntu後不能正確獲取客戶IP解決辦法
1 /// <summary> 2 /// 3 /// </summary> 4 /// <param name="app"></param> 5 /// <param name="env"></param> 6 /// <param name="loggerFactory"></param> 7 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 8 { 9 #region 解決Ubuntu Nginx 代理不能獲取IP問題 10 app.UseForwardedHeaders(new ForwardedHeadersOptions 11 { 12 ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto 13 }); 14 #endregion 15 }
本人站點用的是Nginx進行代理,而站點指向是本地Ip,不能正確獲得客戶的IP,這時就需要通過Nginx獲取到的IP傳遞給站點
Nginx的配置
1 server { 2 listen 80; 3 server_name www.xxx.com; 4 root /var/www/html; 5 index index.html index.htm index.nginx-debian.html; 6 7 location / { 8 proxy_pass http://localhost:5000; 9 proxy_http_version 1.1; 10 proxy_set_header Upgrade $http_upgrade; 11 proxy_set_header Connection keep-alive; 12 proxy_set_header Host $host; 13 proxy_set_header X-Real-IP $remote_addr; 14 proxy_cache_bypass $http_upgrade; 15 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 16 } 17 }
重啟Nginx:
sudo service nginx restart;