[转]nginx反向代理获取用户真实ip - 逃亡的山猫

pajeroquan 2021-08-05 原文


[转]nginx反向代理获取用户真实ip


nginx做反向代理时,默认的配置后端获取到的ip都是来自于nginx,那么如何转发用户的真实IP到后端程序呢?
当前端使用nginx代理,后端使用php-fpm时,如果还是使用$_SERVER[\’REMOTE_ADDR\’],那么php程序获取到的是nginx的ip地址,而不是用户的真实ip。

upstream www.264.cn {
    ip_hash;
    server serving-server1.com:80;
    server serving-server2.com:80;
}
server {
    listen www.264.cn:80;
    server_name www.264.cn;

    location / {
        proxy_pass http://www.264.cn;
    }

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

 

在nginx的配置文件中加入下面三个指令,这样后端php就可以使用$_SERVER[\’HTTP_X_REAL_IP\’]获取到访客的ip。

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

如果你想使用$_SERVER[\’REMOTE_ADDR\’],不想修改代码,那么可以通过修改REMOTE_ADDR的值来实现。

经过多层代理后 $http_x_forwared_for 会含有多个ip,其中第一个ip是客户端的ip,REMOTE_ADDR只能是客户端的ip,所以可以用正则提取 $http_x_forwarded_for的第一个ip给REMOTE_ADDR:

set $realip $remote_addr;
  if ($http_x_forwarded_for ~ "^(\d+\.\d+\.\d+\.\d+)") {
    set $realip $1;
  }
  fastcgi_param REMOTE_ADDR $realip;

 

发表于
2017-05-24 09:21 
逃亡的山猫 
阅读(229
评论(0
编辑 
收藏 
举报

 

版权声明:本文为pajeroquan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/pajeroquan/p/6897289.html

[转]nginx反向代理获取用户真实ip - 逃亡的山猫的更多相关文章

  1. mysql 复制数据库 – freefei

    mysql 复制数据库 2017-10-17 09:25  freefei  阅读(34400)  评论(0) […]...

  2. 下载并安装eclipse – 一个不会coding的girl

    下载并安装eclipse 一. 下载eclipse   1. 进入eclipse官网——www.eclipse […]...

  3. 推荐一款自动化测试神器,不会写代码也能做! – 狂师

    推荐一款自动化测试神器,不会写代码也能做! 2021-07-13 12:36  狂师  阅读(2147)  评 […]...

  4. Oracle数据迁移:从存储了中文的但字符集为WE8ISO8859P1数据库导入数据到字符集为ZHS16GBK的数据库 – Render

    Oracle数据迁移:从存储了中文的但字符集为WE8ISO8859P1数据库导入数据到字符集为ZHS16GBK […]...

  5. iOS 通过(lame)将录制音频转换成Mp3 – Hai_阔天空

    iOS 通过(lame)将录制音频转换成Mp3 版权声明:本文为博主原创文章,未经博主允许不得转载。 转载请注 […]...

  6. asp调用短信接口实现用户注册 – 动力思维乐信

    asp调用短信接口实现用户注册 前几天做一个asp语言开发的网站需要实现用户注册短信验证功能,就研究了一下如何 […]...

  7. FOP相关技术 – 笨笨

    FOP相关技术 FOP相关技术 efly 原创  (参与分:1044,专家分:1820)   发表:2002- […]...

  8. 自制多选功能相册 – 奋进的闹钟

    自制多选功能相册   转载 http://blog.csdn.net/kingsley_cxz/article […]...

随机推荐

  1. 【装机吧】用U盘安装RedHat linux 5.3的教程 – 装机大神

    你们知道吗?世界上运算最快的10台超级计算机运行的都是Linux操作系统。那么什么是linux系统呢?Linu […]...

  2. 源码级深度理解 Java SPI

    作者:vivo 互联网服务器团队- Zhang PengSPI 是一种用于动态加载服务的机制。它的核心思想就是解耦,属于典型的微内核架构模式。SPI 在 Java 世界应用非常广泛,如:Dubbo、Spring Boot 等框架。本文从源码...

  3. FindBugs的安装及使用

    一、FindBugs的安装 1、官网下载FindBugs插件:http://sourceforge.net/p […]...

  4. oracle创建新的数据库

           ...

  5. 通过存储过程(SP)实现SQL Server链接服务器(LinkServer)的添加

    1. 背景 当系统的微服务化做的不是很高的时候,部分功能要通过DB LinkServer 来实现跨 Serve […]...

  6. 零基础学python要多久-零基础学习Python大概要多久,感悟分享?

    在互联网时代编程无处不在,它存在于我们生活和工作之中,可以说哪里有通讯,哪里有互联网就一定会有编程。由于Pyt […]...

  7. 网站前端优化的技术

    ① 浏览器访问优化: – 减少HTTP请求数量:合并CSS、合并JavaScript、合并图片(C […]...

  8. 运维工程师是要学python还是学go那? – 小猿圈IT

    在我们的认知中,运维工程师就是一个背锅侠,那么咱们怎么样来避免做背锅侠那? 可能有人会告诉你,你需要去懂一门开 […]...

展开目录

目录导航