美文网首页
nginx ---POST_READ阶段(7.7更新)

nginx ---POST_READ阶段(7.7更新)

作者: 温岭夹糕 | 来源:发表于2020-06-06 19:25 被阅读0次

    对应文档地址:realip模块
    参考文章:https://blog.csdn.net/q328730422/article/details/85318516

    首先我们需要知道http的头部X-Real-IP和X-Forwarded-For用于存放经过反向代理的真实客户IP
    两者的差别是一个是直接赋值,一个是递增如(假设真实IP为1.1.1.1)
    X-Real-IP:1.1.1.1
    X-Forwarded-For:2.2.2.2,1.1.1.1(2.2.2.2是经过代理的服务器IP)

    realIp模块是POST_READ阶段的主要模块
    在该模块中可获取用户的真实IP

    --with-http_realip_module //用于安装该模块
    

    当原始用户的请求经过代理(squid,proxy)转发之后,nginx接收到的请求的来源地址也就变成了该代理服务器的IP,于是乎nginx 就无法获取用户请求的真实IP地址了。

            set_real_ip_from 代理服务器;
            #如果请求来自代理服务器那么就执行下面操作
            real_ip_header X-Forwarded-For;
            # 设置$remote_addr的变量为X-Forwarded-For的最后一个值,或者X-Real-IP的值
            real_ip_recursive off;
    

    注意!当real_ip_recursive 为on时,set_real_ip_from中设置的可信地址将被过滤掉!
    实验:
    nginx配置如下(假设我的真实域名为10.10.10.10)

            set_real_ip_from 10.10.10.10;
            real_ip_header X-Forwarded-For;
            real_ip_recursive off;
    
            location / {
                  return 200 'realIP is $remote_addr\n';
            }
    

    此时不通过浏览器访问改为curl命令访问,即本机发起访问 假设我的真实域名为10.10.10.10

    curl 域名/地址 -H 'X-Forwarded-For:1.1.1.1,10.10.10.10';
    

    结果为 X-Forwarded-For的最后一个值即10.10.10.10
    若设置 real_ip_recursive on 那么10.10.10.10将会被过滤掉,结果为其前一个即1.1.1.1

    拓展:

    关于反向代理获取真实ip的实践

    假设 客户端访问经过以下顺序:
    客户端->服务器A->服务器B
    服务器A为服务器B的上游服务器,并反向代理服务器B
    若不经过特殊处理 服务B 获取到的客户端IP永远是服务器A的。
    服务器B获取真实IP的办法

    服务器Anginx配置,即同时将真实IP的头部一并发送过去
            location / {
                proxy_pass http://服务器B的IP;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
    

    服务器B配置

            set_real_ip_from 服务器A;
            real_ip_header X-Real-IP;
            location / {
                 return 200 $remote_addr;
            }
    

    如何关闭NGINX版本信息

    image.png

    暴露nginx版本信息容易让不怀好意的人找到对应版本的漏洞并发起攻击
    解决?使用server_tokens

    server_tokens off
    
    image.png

    相关文章

      网友评论

          本文标题:nginx ---POST_READ阶段(7.7更新)

          本文链接:https://www.haomeiwen.com/subject/xhxkzhtx.html