zoukankan      html  css  js  c++  java
  • 关于.net core使用nginx做*获取客户端ip的问题

    1、正常情况下.net core获取客户端ip是比较简单的

             /// <summary>
            /// 获取客户Ip
            /// </summary>
            /// <param name = "context" ></ param >
            /// < returns ></ returns >
            public static string GetClientUserIp(this HttpContext context)
            {
                var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
                if (string.IsNullOrEmpty(ip))
                {
                    ip = context.Connection.RemoteIpAddress.ToString();
                }
    
                return ip;
            }    
    

      通过这样一个方法就能获取到客户端ip。

    2、但是,我在centos下使用nginx代理后,这样指向的就是本地ip了,所以需要将nginx获取到的ip传递到.net core web站点。

    3、首先,我们需要在Startup.cs里添加

    app.UseForwardedHeaders(new ForwardedHeadersOptions
                {
                    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
                });

    然后

    server {
        listen 80;
        location / {
            proxy_pass http://localhost:5000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }

    这是之前我的nginx配置。

    需要再加上一行

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    最后重启nginx,至此可以获取到客户端ip啦。

  • 相关阅读:
    ubuntu16.04编译安装PHP7.0.9,Nginx1.10,Phalcon3.1扩展
    阿里云云大使推广产品集合
    mysql性能优化-慢查询分析、优化索引和配置
    Js学习笔记(二)
    Javascript学习笔记(一)
    HashMap
    JDK 1.8 新特性
    Java转型
    Java IO
    Java正则表达式
  • 原文地址:https://www.cnblogs.com/lyps/p/10149996.html
Copyright © 2011-2022 走看看