.net core webapi 后台獲取客戶端ip地址


Asp.Net Core2.0獲取客戶IP地址,及解決發布到Ubuntu服務器獲取不到正確IP解決辦法

 

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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM