<i id='9ztzj'><div id='9ztzj'><ins id='9ztzj'></ins></div></i>
<span id='9ztzj'></span>

    <dl id='9ztzj'></dl>
    1. <tr id='9ztzj'><strong id='9ztzj'></strong><small id='9ztzj'></small><button id='9ztzj'></button><li id='9ztzj'><noscript id='9ztzj'><big id='9ztzj'></big><dt id='9ztzj'></dt></noscript></li></tr><ol id='9ztzj'><table id='9ztzj'><blockquote id='9ztzj'><tbody id='9ztzj'></tbody></blockquote></table></ol><u id='9ztzj'></u><kbd id='9ztzj'><kbd id='9ztzj'></kbd></kbd>

        <i id='9ztzj'></i>
          <ins id='9ztzj'></ins>

          <code id='9ztzj'><strong id='9ztzj'></strong></code>

          <acronym id='9ztzj'><em id='9ztzj'></em><td id='9ztzj'><div id='9ztzj'></div></td></acronym><address id='9ztzj'><big id='9ztzj'><big id='9ztzj'></big><legend id='9ztzj'></legend></big></address>
        1. <fieldset id='9ztzj'></fieldset>

        2. linux中配置Nginx 拒绝代理访问

          • 时间:
          • 浏览:181
          • 来源:124软件资讯网

              先或许说说简朴的结构…前端一个Nginx反向署理  ,后端一个Nginx instance app for PHP…现实上就是个Discuz  ,之前面临CC攻击都是预警剧本或者走CDN  ,可是这次攻击者不再打流量 ,而是针对数据库请求页面举行攻击  ,如search操作…帖子ID F5等..从日志剖析来看是从3个URL着手攻击的  ,其时使用Nginx 匹配$query_string 来return 503…不外会导致页面不能会见  ,以是想到这么一个折中的措施  。

              首先你看一段署理请求的日志:

              ##通太过析  ,在后端发现其署理会见过来的数据都是两个IP的  ,默认情形下直接会见获取真实IP  ,其IP只有一个  ,而通过手机 3G4G上网则是2个IP  ,不外有匿名IP的话  ,到服务器则只有一个IP ,这种就不太好判断了...

              [root@ipython conf]# tail -f /var/log/nginx/logs/access.log | grep ahtax

              120.193.47.34 - - [26/Sep/2014:23:34:44 +0800] "GET /ahtax/index.html HTTP/1.0" 503 1290 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" "10.129.1.254, 120.193.47.34"

              使用PHP剖析下会见时的_SERVER变量

            代码如下

            [root@ipython conf]# cat /%path%/self_.php

            if ($_SERVER["HTTP_X_FORWARDED_FOR"]!="")
            {
            $user_ip=$_SERVER["HTTP_X_FORWARDED_FOR"];
            }elseif($_SERVER["HTTP_X_REAL_IP"]!=""){
            $user_ip=$_SERVER["HTTP_X_REAL_IP"];
            }else{
            $user_ip=$_SERVER["REMOTE_ADDR"];
            }

            echo $user_ip."
            ";

            foreach($_SERVER as $key=>$value)
            echo $key."\t"."$value"."
            ";

            ?>

              通过浏览器会见确认相关参数

              有了这个特征就很好判断了….

              首先需要有一个正则来匹配日志里的两个IP,Nginx正则依赖pcre库...

            代码如下

            [root@ipython conf]# pcretest
            PCRE version 7.8 2008-09-05

            re> '^\d+.\d+.\d+.\d+\W\s\d+.\d+.\d+.\d+$'
            data> 192.168.1.1, 1.1.1.1
            0: 192.168.1.1, 1.1.1.1

            Nginx设置文件在location $dir 中加入条件来匹配http_x_forwarded_for:
            #proxy
            if ($http_x_forwarded_for ~ '^\d+.\d+.\d+.\d+\W\s\d+.\d+.\d+.\d+$'){
            return 503;
            }

              重载设置后就可以限制使用署理IP来会见的网站用户了