关于.net core使用nginx做反向代理获取客户端ip的问题

本文介绍在CentOS环境下,使用Nginx作为代理服务器时,如何正确配置以使.NET Core应用能获取到客户端的真实IP地址。通过在Nginx配置中加入特定指令,并在.NET Core应用中启用Forwarded Headers中间件,可以解决因代理导致的IP获取不准确问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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啦。

转载于:https://www.cnblogs.com/lyps/p/10149996.html

### 如何在 VSCode 中配置和使用反向代理 #### 使用 Nginx 进行反向代理配置 为了实现更高效的访问以及更好的安全性,在本地开发环境中可以通过Nginx来设置反向代理。安装完成后,编辑`nginx.conf`文件或创建一个新的配置文件用于定义站点特定的行为: ```conf server { listen 80; server_name localhost; location / { proxy_pass http://localhost:5001/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 上述代码片段展示了如何将来自客户端的所有请求转发到运行于同一台机器上的ASP.NET Core应用程序(监听端口5001),并保持原始HTTP头部信息不变[^3]。 #### Vue CLI 开发环境下的反向代理配置 对于前端开发者而言,如果正在使用Vue CLI构建工具链,则可以直接修改项目的`vue.config.js`文件来进行简单的API调用重定向处理而无需额外部署完整的web服务器软件包。具体法如下所示: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'https://www.example.com', changeOrigin: true, pathRewrite: { '^/api': '' }, }, }, }, }; ``` 这段脚本的作用是在开发期间自动调整所有以`/api`开头的URL路径指向指定的目标主机,并去除原有的前缀部分以便匹配远程接口的实际位置[^4]。 #### Visual Studio Code 插件辅助 除了手动编写必要的配置外,还可以考虑利用Visual Studio Code市场中的扩展插件简化某些重复性的任务。建议从官方Marketplace获取可靠的第三方贡献作品而非内置选项,因为后者可能无法满足最新的需求变化或是存在兼容性问题[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值