Nginx+iptables屏蔽访问Web页面过于频繁的IP(防DDOS,恶意访问,采集器)
[ 2017-07-10 13:42:31 | 作者: admin ]
通过分析nginx的日志来过滤出访问过于频繁的IP地址,然后添加到nginx的blockip.conf,并重启nginx.
阅读全文…
#!/bin/sh
nginx_home = /Data/app_1/nginx
log_path = /Data/logs
/usr/bin/tail -n50000 $log_path/access.log \
|awk ‘$8 ~/aspx/{print $2,$13}' \
|grep -i -v -E “google|yahoo|baidu|msnbot|FeedSky|sogou” \
|awk ‘{print $1}'|sort|uniq -c |sort -rn \
|awk ‘{if($1>150)print “deny “$2″;”}'> $nginx_home/conf/vhosts/blockip.conf
/bin/kill
...nginx_home = /Data/app_1/nginx
log_path = /Data/logs
/usr/bin/tail -n50000 $log_path/access.log \
|awk ‘$8 ~/aspx/{print $2,$13}' \
|grep -i -v -E “google|yahoo|baidu|msnbot|FeedSky|sogou” \
|awk ‘{print $1}'|sort|uniq -c |sort -rn \
|awk ‘{if($1>150)print “deny “$2″;”}'> $nginx_home/conf/vhosts/blockip.conf
/bin/kill
阅读全文…
Nginx获取自定义头部header的值 反向代理,真实IP和真实端口问题
[ 2016-11-28 17:10:06 | 作者: admin ]
1、nginx是支持读取非nginx标准的用户自定义header的,但是需要在http或者server下开启header的下划线支持:
underscores_in_headers on;
2、比如我们自定义header为X-Real-IP ,通过第二个nginx获取该header时需要这样:
$http_x_real_ip; (一律采用小写,而且前面多了个http_)
3、如果需要把自定义header传递到下一个nginx:
如果是在nginx中自定义采用proxy_set_header X_CUSTOM_HEADER $http_host;
如果是在用户请求时自定义的header,例如curl –head -H “X_CUSTOM_HEADER: foo” ...
阅读全文…
underscores_in_headers on;
2、比如我们自定义header为X-Real-IP ,通过第二个nginx获取该header时需要这样:
$http_x_real_ip; (一律采用小写,而且前面多了个http_)
3、如果需要把自定义header传递到下一个nginx:
如果是在nginx中自定义采用proxy_set_header X_CUSTOM_HEADER $http_host;
如果是在用户请求时自定义的header,例如curl –head -H “X_CUSTOM_HEADER: foo” ...
阅读全文…
Nginx平滑升级的详细操作方法
[ 2016-10-01 15:25:40 | 作者: admin ]
原文地址:1分钟搞定 Nginx 版本的平滑升级与回滚 https://www.cnblogs.com/youkanyouxiao/p/10468885.html
一、平滑升级概述
Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是:
(1)在不停掉老进程的情况下,启动新进程。
(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
(3)新进程接受新请求。
(4)老进程处理完所有请求,关闭所有连接后,停止。
这样就很方便地实现了平滑升级。一般有两种情况下需要升级Nginx,一种是确实要升级Nginx的版本,另一种是要为Nginx添加新的模块。
二、判断新版本是否兼容旧的配置文件
/usr/local/nginx-1.14.2/sbin/nginx -t
三、升级到新版本
cd /usr/local/nginx-1.12.2/sbin/
...
阅读全文…
一、平滑升级概述
Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是:
(1)在不停掉老进程的情况下,启动新进程。
(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
(3)新进程接受新请求。
(4)老进程处理完所有请求,关闭所有连接后,停止。
这样就很方便地实现了平滑升级。一般有两种情况下需要升级Nginx,一种是确实要升级Nginx的版本,另一种是要为Nginx添加新的模块。
二、判断新版本是否兼容旧的配置文件
/usr/local/nginx-1.14.2/sbin/nginx -t
三、升级到新版本
cd /usr/local/nginx-1.12.2/sbin/
...
阅读全文…
CentOS安装vnstat监控流量的统计并配置vnstat PHP frontend
[ 2016-09-04 10:01:30 | 作者: admin ]
使用iptraf可以查看实时的流量,但是vnstat不仅可以看实时的,还能够记录下来,比较方便看服务器状态
p.s. 实际部署过程的问题记录,可以自己修改下vnstat.php文件
1、首先php.ini中需要 /var/lib/vnstat/ 加入到base_dir中
2、另外disable_functions一般popen函数都是被禁的,所以需要解禁file函数(此函数将文件直接读到数组,比 file_get_contents很方便)
3、其他遇到问题需要自己调试下
wget https://acelnmp.googlecode.com/files/vnstat-1.10.tar.gz
...阅读全文…
【推荐】nginx限速白名单配置,GEO和MAP
[ 2016-08-03 22:05:26 | 作者: admin ]
p.s. 较新版本的nginx中默认已经加载了 ngx-http-geo-module 和 ngx-http-map-module ,所以不必再额外添加模块。
另外,如果修改nginx.conf没有生效,-s reload无法生效的话需要干掉所有nginx进程,重新打开nginx 。参考: http://blog.xg98.com/article.asp?id=2656
在没有人为操作删除的情况下(without-http_geo_module),nginx默认模块中已经加载了ngx-http-geo-module相关内容;
ngx-http-geo-module可以用来创建变量,变量值依赖于客户端 ip 地址;
ngx-http-map-module可以基于其他变量及变量值进行变量创建,其允许分类,或者映射多个变量到不同值并存储在一个变量中;
...
阅读全文…
另外,如果修改nginx.conf没有生效,-s reload无法生效的话需要干掉所有nginx进程,重新打开nginx 。参考: http://blog.xg98.com/article.asp?id=2656
在没有人为操作删除的情况下(without-http_geo_module),nginx默认模块中已经加载了ngx-http-geo-module相关内容;
ngx-http-geo-module可以用来创建变量,变量值依赖于客户端 ip 地址;
ngx-http-map-module可以基于其他变量及变量值进行变量创建,其允许分类,或者映射多个变量到不同值并存储在一个变量中;
...
阅读全文…
nginx使用Limit Requests模块限制单个IP请求速率的方法
[ 2016-08-03 22:02:28 | 作者: admin ]
p.s. nginx里面有2个模块可以限制客户端的访问频率:limit_req和limit_conn ,具体的区别可以再查,这里只讲述 limit_req ,一般也够用了。
p.s. 如果修改配置不生效,需要杀进程重新开 nginx 。参考: http://blog.xg98.com/article.asp?id=2656
本文介绍下,nginx环境中使用Limit Requests模块,限制单个IP请求速率的方法,有需要的朋友,参考下吧。
Limit Requests模块可以限制单个客户端发送请求的速率。
示例配置如下:
阅读全文…
p.s. 如果修改配置不生效,需要杀进程重新开 nginx 。参考: http://blog.xg98.com/article.asp?id=2656
本文介绍下,nginx环境中使用Limit Requests模块,限制单个IP请求速率的方法,有需要的朋友,参考下吧。
Limit Requests模块可以限制单个客户端发送请求的速率。
示例配置如下:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location ~ .*\.(php|php5)?$
...limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location ~ .*\.(php|php5)?$
阅读全文…
nginx geo使用方法
[ 2016-08-03 14:37:18 | 作者: admin ]
geo指令使用ngx_http_geo_module模块提供的。默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module。 ngx_http_geo_module模块可以用来创建变量,其值依赖于客户端IP地址。 geo指令 语法: geo [$address] $variable { ... } 默认值: — 配置段: http 定义从指定的变量获取客户端的IP地址。默认情况下,nginx从$remote_addr变量取得客户端IP地址,但也可以从其他变量获得。如
geo $remote_addr $geo {
default 0;
127.0.0.1 1;
}
default 0;
127.0.0.1 1;
}
geo $http_client_ip $geo {
default 0;
127.0.0.1 1;
}
default 0;
127.0.0.1 1;
}
Discuz X3 nginx下伪静态404错误
[ 2016-01-02 21:52:19 | 作者: admin ]
在給熱盒子僞靜態過程中,在後臺設置了僞靜態,但是前臺頁面是僞靜態了但是卻出現了404錯誤。折騰了一下午,搜索了各種解決辦法,但是還是不行,最後在一個主機論壇裏找到了思路,結合自網站的情況解決了問題。
解決方法歸納如下
在服務器端啓動僞靜態
添加虛擬主機,執行如下命令:/root/vhost.sh 根據提示輸入要綁定的域名,回車,如果需要添加更多的域名,輸入y,再輸入要另外綁定的域名,多個域名可以用空格隔開。再輸入域名綁定的目錄(絕對目錄,如/home/wwwroot/lnmp,如果不填默認是/home/wwwroot/綁定的域名),再選擇是否添加僞靜態規則,默認已經有了Discuz、Wordpress、Sablog、emlog、dabr,可直接輸入以上名稱即可,如果需要添加自定義僞靜態規則,直接輸入一個想要的名字,程序會自動創建僞靜態文件,直接在/usr/local/nginx/conf/你自定義的僞靜態名字.conf ...
阅读全文…
解決方法歸納如下
在服務器端啓動僞靜態
添加虛擬主機,執行如下命令:/root/vhost.sh 根據提示輸入要綁定的域名,回車,如果需要添加更多的域名,輸入y,再輸入要另外綁定的域名,多個域名可以用空格隔開。再輸入域名綁定的目錄(絕對目錄,如/home/wwwroot/lnmp,如果不填默認是/home/wwwroot/綁定的域名),再選擇是否添加僞靜態規則,默認已經有了Discuz、Wordpress、Sablog、emlog、dabr,可直接輸入以上名稱即可,如果需要添加自定義僞靜態規則,直接輸入一個想要的名字,程序會自動創建僞靜態文件,直接在/usr/local/nginx/conf/你自定義的僞靜態名字.conf ...
阅读全文…