linux中配置Nginx 拒绝代理访问

2016-03-31 15:55 147 1 收藏

今天图老师小编要跟大家分享linux中配置Nginx 拒绝代理访问,精心挑选的教程简单易学,喜欢的朋友一起来学习吧!

【 tulaoshi.com - 服务器 】

linux中配置Nginx 拒绝代理访问

   先大概说说简单的结构前端一个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
?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."br /";

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

?
 

  通过浏览器访问确认相关参数

linux中配置Nginx 拒绝代理访问 图老师

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/fuwuqi/)  代码如下 

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/fuwuqi/)

  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来访问的网站用户了

nginx-reject-proxy1

来源:https://www.tulaoshi.com/n/20160331/2051455.html

延伸阅读
标签: 服务器
Linux系统下配置squid代理服务器的过程详解   简单记录一下Squid透明代理服务器的配置 环境:VirtualBox + CentOS 6.0 + squid-3.1.4-1.el6.i686 0、检查squid是否默认安装,没有安装的先安装 代码如下: [root@Slyar ~]# rpm -qa squid squid-3.1.4-1.el6.i686 1、虚拟机添加双网卡,全部设置桥接,配...
代理/防火墙 1.iptables规则表 Filter(针对过滤系统):INPUT、FORWARD、OUTPUT NAT(针对地址转换系统):PREROUTING、POSTROUTING、INPUT、OUTPUT Mangle(针对策略路由和特殊应用):OUTPUT、POSTROUTING 2.安装包 iptables-1.2.7a-2 3.配置防火墙 1) 命令语法 Usge: iptables [-t table] -[ADC] chain rule-specification [option...
标签: 服务器
Nginx安装配置PageSpeed模块实现网站加速   作为Nginx组件,ngx_pagespeed将重写你的网页,让用户以更快的速度进行访问。重写的工作包括压缩图片、缩减CSS和JavaScript、扩展缓存时间,同样还包括其它一些最佳实践: 优化缓存整合应用程序的数据和逻辑 最小化round-trip次数削减连续的请求/响应周期数 最小化请求开销...
标签: 浏览器
Windows Server 2008配置IE使用代理 1.1.1 配置IE使用代理 什么是代理服务器? 代理服务器是在 Web 浏览器(如 Internet Explorer)和 Internet 之间起媒介作用的计算机。代理服务器通过存储经常使用的网页副本来提高 Web 性能。 当浏览器请求存储在代理服务器收集(其缓存)中的网页时,网页由代理服务器提供,这比进入 Web ...
标签: 服务器
Linux网络基本配置   1 IP编址 1 IP编址是一个双层的编址方案,一个IP编址标识一个主机(或一个网卡接口) 2 现在应用最为广泛的是ipv4,已经开始逐步香ipv6切换 3 ipv4地址为32位,ipv6为128位 4 一个ipv4地址分为两个部分,网络部分和主机部分 5 网络部分标识是哪个所属区域,主机部分是标识哪台主机 6...

经验教程

365

收藏

29
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部