通过Nginx获取用户真实IP

nginx配置

如上面配置,接口需要使用的时候获取X-real-ip就可以,但是经过测试以后,发现X-real-ip并不是真实的用户IP,而是Nginx代理服务器的IP,原因就是经过多级代理,$remote_addr是上一级的IP。

名词解释

  • $remote_addr
    获取到上一级代理的IP
  • proxy_add_x_forwarded_for
  • 获取到结果例如:(223.104.6.125, 10.10.10.45),第一个是用户的真实IP,第二个是一级代理的IP,依此类

通过上面的分析我们可以从proxy_add_x_forwarded_for中获取到用户的真实IP,使用正则匹配获取第一个即可,如下:

也可以通过后台的程序,从请求的header里获取X-Forwarded-For,然后取起一个值即可

嗯,就酱~~

Original: https://www.cnblogs.com/jin-zhe/p/11989012.html
Author: 靳哲
Title: 通过Nginx获取用户真实IP

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544211/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux源码安装RabbitMQ高可用集群

    1.环境说明 linux版本:CentOS Linux release 7.9.2009 erlang版本:erlang-24.0 rabbitmq版本:rabbitmq_serv…

    Java 2023年6月7日
    070
  • Java 8 并发性基础

    https://www.ibm.com/developerworks/cn/java/j-jvmc2/index.html http://www.nurkiewicz.com/20…

    Java 2023年5月29日
    085
  • Spring boot项目设置加载静态资源的路径(spring.resources.static-locations)

    默认Springboot将从如下位置按如下优先级(从高到低)加载jar包对应前端静态资源: 1.jar包同级static目录2.jar包同级public目录3.jar包同级reso…

    Java 2023年5月30日
    063
  • Servlet 4

    Servlet 4.0规约简介 Servlet 4.0 规约是JCP组织定义的Web规约,JSR编号369。 1.1 什么是Servlet? Servlet 是基于Java技术的W…

    Java 2023年6月15日
    068
  • Spring AOP的简单示例

    配置文件

    Java 2023年5月30日
    076
  • 【Java基础】初始化模块和静态初始化模块

    在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。 需要特别注意:静态初始化块只在类加载时执行…

    Java 2023年5月29日
    078
  • scrapy框架之创建项目运行爬虫

    创建scrapy scrapy startproject 项目名称 创建蜘蛛(爬虫文件) scrapy genspider 蜘蛛名称 网址 爬取网页(举百度的列子) 编写爬虫文件 …

    Java 2023年6月5日
    095
  • mysql安装my.cnf配置

    进入my.cnf文件//乱码修改 设置编码 //编码 //连接数据库执行操作 1.只有在普通用户的客户端连接时才能执行这个参数,超级用户或有连接管理权限的用户会跳过这个设置;2.一…

    Java 2023年6月16日
    086
  • 部署-docker安装gitlab

    gitlab简单介绍 gitlab是一个私有的源代码管理系统,提供了web界面给用户进行访问和操作。gitlab存储的仓库是服务端的,需要跟本地的仓库进行配合使用,而本地的仓库管理…

    Java 2023年6月7日
    069
  • Maven学习笔记,动力节点maven教程随堂笔记

    *这篇笔记的学习视频来自b站动力节点 第一部分 1.分析项目要做什么,知道项目有哪些组成部分。2.设计项目,通过哪些步骤,使用哪些技术。需要多少人, 多长的时间。3.组建团队,招人…

    Java 2023年6月9日
    078
  • CSS相关知识及入门

    修饰HTML页面,美化 CSS代码规范 CSS选择器 就是以HTML中的标签名作为选择器名称 选择CSS代码作用于对应标签名的标签上 适用于将相同样式作用于多个同名标签上 给相应的…

    Java 2023年6月6日
    061
  • 如何在jsp里面写java代码

    如何在jsp里面写java代码 jsp和html相比,最显著的优势就在于,jsp里面可以写java代码,但是html中不能。 那么如何在jsp中写java代码呢! jsp中写jav…

    Java 2023年5月29日
    056
  • Java:JVM基础——堆(Java8)

    1、堆的介绍 Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。 此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及…

    Java 2023年6月7日
    058
  • 并发编程学习

    Semaphore Semaphore 可以允许多个线程访问一个临界区。 应用:实现线程池 CountDownLatch 应用: 业务原始状态:一个线程执行查询订单,查询派送单,对…

    Java 2023年6月8日
    046
  • JAVA_AesCBC纯净例子

    java;gutter:true; import java.io.UnsupportedEncodingException; import java.security.Invali…

    Java 2023年5月29日
    059
  • 搭建k8s集群

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    069
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球