<i id='suiiw'><div id='suiiw'><ins id='suiiw'></ins></div></i>
      <acronym id='suiiw'><em id='suiiw'></em><td id='suiiw'><div id='suiiw'></div></td></acronym><address id='suiiw'><big id='suiiw'><big id='suiiw'></big><legend id='suiiw'></legend></big></address>
      <dl id='suiiw'></dl>

      <span id='suiiw'></span>

      <code id='suiiw'><strong id='suiiw'></strong></code>

      <i id='suiiw'></i>

      <fieldset id='suiiw'></fieldset>
      1. <ins id='suiiw'></ins>
      2. <tr id='suiiw'><strong id='suiiw'></strong><small id='suiiw'></small><button id='suiiw'></button><li id='suiiw'><noscript id='suiiw'><big id='suiiw'></big><dt id='suiiw'></dt></noscript></li></tr><ol id='suiiw'><table id='suiiw'><blockquote id='suiiw'><tbody id='suiiw'></tbody></blockquote></table></ol><u id='suiiw'></u><kbd id='suiiw'><kbd id='suiiw'></kbd></kbd>
        1. linux中配置Nginx 拒绝代理访问

          • 时间:
          • 浏览:62
          • 来源: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来会见的网站用户了