zoukankan      html  css  js  c++  java
  • --with-http_realip_module选项(后台Nginx服务器记录原始客户端的IP地址 )

    转自:http://blog.itpub.net/27043155/viewspace-734234/

        通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-Forwarded-For)。

        如果Nginx工作在某些7层负载均衡代理后面,这个功能对于Nginx服务器非常有用,由于客户端请求的本地IP(就是客户端的请求地址)在通过7层代理时被添加了客户端IP地址头,因此才使得后端的Nginx能够取得震慑客户端的IP地址值。该模块在默认安装是并没有安装,因此如果要使用该模块,那么在编译安装是需要添加--with-http_realip_module选项。

        为什么使用该模块,它的意义在于能够使得后台服务器记录原始客户端的IP地址。

    配置示例

    set_real_ip_from   192.168.1.0/24;

    set_real_ip_from   192.168.2.1;

    real_ip_header     X-Real-IP;

       

    指    令

       该模块仅提供了两条指令。

    指令名称:set_real_ip_from

    功    能:通过该指令指定信任的地址,将会被替代为精确的IP地址。从0.8.22版本后也可以使用信任的Unix套接字。这里设置的IP就是指前端Nginx 、Varnish或者 Squid 的 IP地址。

    语    法: set_real_ip_from [the address|CIDR|"unix:"]

    默 认 值: none

    使用环境: http, server, location

    指令名称:real_ip_header

    功    能:这个指令用于设置使用哪个头来替换IP地址。如果使用了X-Forwarded-For,那么该模块将会使用X-Forwarded-For头中的最后一个IP地址来替换前端代理的IP地址。

    语    法: real_ip_header [X-Real-IP|X-Forwarded-For]

    默 认 值: real_ip_header X-Real-IP

    使用环境: http, server, location

    使用实例   

        在下面的实例中,我们环境是这样的有两台Nginx服务器,一台是前端,另一台是后端,前端的Nginx被用作代理,而后台的Nginx用于提供页面访问,还有一台客户端,IP地址如下:

      

        前端Nginx:192.168.7.10

        后端Nginx:192.168.1.15

        客户端主机:218.239.201.36

        前端的Nginx配置是这样的:

    server {

      listen       80;

      server_name  www.xx.com;

    location / {

        root   html;

        index  index.html index.htm;

    charset       utf-8;

      }

    location  /865 {

        proxy_pass   http://192.168.3.139:80/;

        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;

      }

    ……

    }

       

       后端的Nginx配置如下:

       

    server {

      listen       80;

      server_name  localhost;

      location / {

        root   /var/www/html;

        index  index.html index.htm;

      }

    访问测试

        如果我们访问http://www.xx.com/865,没问题,可以是正常访问,访问日志如下:

        前端Nginx的日志:

    218.239.201.36 - - [30/Aug/2011:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

       

        后端Nginx的日志:

    192.168.7.10 - - [30/Aug/2011:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

       

        我们看到在后端Nginx的日志中并没有记录原始客户端的IP地址,而是记录了前端Nginx的IP地址。

        如果将后台Nginx服务器的配置修改为:

    server {

      listen       80;

      server_name  localhost;

      set_real_ip_from   192.168.3.0/24;

     set_real_ip_from   100.100.0.0/16;

      real_ip_header     X-Real-IP;

      location / {

        root   html;

        index  index.html index.htm;

      }

        ……

    }

       

    然后我们再次进行访问测试:

        前端Nginx的日志:

    218.239.201.36 - - [30/Aug/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

       

        后端Nginx的日志:

    218.239.201.36 - - [30/Aug/2011:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

       

        可见,这次后台记录的是客户端的IP地址。

  • 相关阅读:
    x64汇编第三讲,64位调用约定与函数传参.
    【Unity】6.7 向量和Vector3类
    【Unity】6.6 Random类
    【Unity】6.5 Time类、Mathf类、Coroutine类
    【Unity】6.4 Transform--移动、旋转和缩放游戏对象
    【Unity】6.3 通过 C# 脚本创建和访问游戏对象
    【Unity】6.2 在VS2015中调试 C# 脚本
    【Unity】6.1 Unity中的C#脚本基础知识
    【Unity】第6章 Unity脚本开发基础
    【Unity】4.7 摄像机
  • 原文地址:https://www.cnblogs.com/liang-wei/p/6144702.html
Copyright © 2011-2022 走看看