`
zhengdl126
  • 浏览: 2538426 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

多级 Nginx 传递客户端 IP

阅读更多

因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。
同样适用于前端是 Squid 或者其他反向代理的情况。

 

 

 

首先前端的 Nginx 要做转发客户端 IP 的配置

location / {
  proxy_pass        http://localhost:8000;

  # Forward the user's IP address to Rails
  proxy_set_header           Host $host:$server_port;
  proxy_set_header           X-Real-IP $remote_addr;
  proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_redirect                off;
}




后端的 Nginx 需要安装一个 Module: NginxHttpRealIpModule ,编译的时候默认不包含此 Module,需要重新编译安装 Nginx,configure 的时候加上 –with-http_realip_module,Nginx 升级或者添加/删除 Module 时支持热切换 ,可以避免中断服务。

升级后配置 NginxHttpRealIpModule,set_real_ip_from 就是指前端 Nginx 或者 Squid 的 IP:

location / {
  proxy_pass        http://localhost:8000;

  # Forward the user's IP address to Rails
  proxy_set_header           X-Real-IP $remote_addr;
  proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;

  proxy_set_header           Host $host;
  proxy_redirect                off;
# NginxHttpRealIpModule
  set_real_ip_from   192.168.1.0/24;
  set_real_ip_from   192.168.2.1;
  real_ip_header     X-Real-IP;
}

最后记得 reload Nginx config

分享到:
评论

相关推荐

    Nginx作为反向代理时传递客户端IP的设置方法

    因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。 同样适用于前端是 Squid 或者...

    nginx配置文件-安装客户端ip进行转发

    在本场景中,我们要探讨的是如何通过Nginx配置文件实现客户端IP的转发功能,这对于网站访问日志分析、安全策略实施以及负载均衡等都有着重要的作用。我们将主要分析两个配置文件:`nginx.conf`和`default.vhosts....

    Cobalt_Strike_C2隐匿多级nginx反向代理1

    在本文中,我们将讨论如何利用多级 Nginx 反向代理来隐藏 C2 通信,提高隐蔽性。 首先,我们要了解 Nginx 反向代理的基本原理。Nginx 是一款高性能的 HTTP 和反向代理服务器,可以将客户端请求转发到其他服务器,...

    nginx+lua+redis通过匹配客户端ip进行灰度发布

    nginx+lua+redis通过匹配客户端ip进行灰度发布 本文将讲述如何使用nginx、lua和redis来实现灰度发布,通过匹配客户端IP来实现灰度发布。灰度发布是一种常见的软件发布方式,它允许开发者在生产环境中发布新的版本,...

    获取客户端真实IP(支持代理服务器)

    然而,在实际应用中,很多情况下用户的请求会经过反向代理服务器(如Nginx、Squid等),这使得直接使用`request.getRemoteAddr()`方法获取到的IP地址往往并不是客户端的真实IP地址。 #### 二、问题分析 当客户端...

    java非常强的获取客户端真实IP的两种方法

    然而,在实际应用场景中,客户端请求往往经过了多级代理(如Apache、Squid等),这使得直接使用`request.getRemoteAddr()`方法获取到的IP地址并不是客户端的真实IP,而是代理服务器的IP地址。 例如,在使用Apache或...

    获取客户端IP地址所需Jar包

    然而,在某些情况下,如通过反向代理服务器(如Nginx、Apache)或负载均衡器访问时,这个方法可能返回的是代理服务器的IP而非客户端的真实IP。这时,我们需要检查X-Forwarded-For头部,该头部通常包含了客户端的IP...

    nginx做反向代理时的真实IP_nginx反向代理_

    2. **X-Real-IP 头部**:为了解决这个问题,Nginx支持通过HTTP头部传递客户端IP。后端服务器可以检查`X-Real-IP`头部来获取真实IP。当Nginx接收到客户端请求时,我们可以配置Nginx将客户端IP添加到`X-Real-IP`头部,...

    nginx 源码

    nginx源码,非常好的学习材料 有助于详细学习nginx设计原理 设计模式 值得研习

    获取客户端MAC地址Demo已经使用说明

    在IT领域,获取客户端MAC(Media Access Control)地址是一项常见的需求,主要用于设备识别或网络管理。本文将详细解析“获取客户端MAC地址Demo”的工作原理、使用方法及其在实际应用中的重要性。 首先,MAC地址是...

    nginx 限制ip、并发量、连接数等配置

    在Nginx配置文件(通常是`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf/nginx.conf`)中,可以使用`allow`和`deny`指令来允许或禁止特定IP或IP段的访问。以下是一个示例: ```nginx server { listen 80; ...

    Nginx如何封禁IP和IP段的实现

    若Nginx启用了SSI(服务器端包含),还可以在403页面中显示被封禁的客户端IP地址,使用SSI指令输出REMOTE_ADDR变量的值。 完成403页面的编辑后,需要在nginx.conf中添加配置,将403错误重定向到自定义的静态页面: ...

    Nginx一个IP如何配置多个站点的方法教程

    对于Nginx,一个IP上配置多个站点还是很常见的。尤其是在开发环境上,更是如此。 下面在我的阿里云上简单的实现这样一个需求: 在一个IP上通过对端口区分来配置多个站点。 环境初始化目录一览配置站点准备添加配置...

    [线上问题] “服务端长连接与客户端短连接引起Nginx产生大量\"TIME_WAIT\"状态的线程”的问题分析解决

    本文讨论了在线上环境中,服务端长连接和客户端短连接配置不当导致Nginx服务器产生大量“TIME_WAIT”状态线程的问题,同时提供了问题的分析和解决方法。本文主要涉及的网络编程知识点包括长连接与短连接的定义和区别...

    Nginx服务器限制IP访问的各种情况全解析

    3. 配置限制IP访问次数:HttpLimitReqModule模块是通过limit_req_zone指令来定义限制区域,包括存储空间、键值(比如客户端的IP地址)和限制速率等参数。通过limit_req指令对特定位置(location)进行限制,可以设置...

    使用Nginx实现根据 IP 匹配指定 URL

    在本案例中,我们关注的是Nginx如何使用其配置指令来根据客户端IP地址改变请求的处理逻辑。具体到本文所描述的场景,目的是实现当特定的IP地址访问某个URL时,将其重定向到另一个URL,而其它非特定的IP地址访问相同...

    nginx配置tcp转发(nginx通过白名单访问)

    例如,`proxy_protocol`可以启用Nginx与上游服务器之间的代理协议,以便获取客户端的真实IP;`proxy_set_header`可以设置传递给后端服务器的头部信息。 总之,Nginx的TCP代理转发功能使得我们可以利用其强大的性能...

    java socket 用户真实IP测试

    通常,当用户通过Nginx访问服务时,Nginx会作为客户端与服务器建立Socket连接,这时服务器接收到的Socket连接请求的源IP将是Nginx的IP,而不是用户的IP。为了获取用户的真实IP,我们需要利用HTTP头部信息,特别是"X-...

    详解NGINX如何统计网站的PV、UV、独立IP

    Nginx: PV、UV、独立IP 做网站的都知道,平常经常要查询下网站PV、UV等网站的访问数据,当然如果网站做了CDN的话,nginx本地的日志就没什么意义了,下面就对nginx网站的日志访问数据做下统计; 概念: UV(Unique ...

    nginx ip 过滤访问限制

    python脚本 从nginx的访问log,获取访问IP,记录到redis,根据IP访问数量判断是否存在安全问题,记录不正常IP,(写入到防火墙过滤-待完成)

Global site tag (gtag.js) - Google Analytics