浏览模式: 普通 | 列表
分类: nginx | < | 1 | 2 | 3 | 4 | 5 | 6 | >
通过分析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
...

阅读全文…
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” ...

阅读全文…

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/
...

阅读全文…
attachments/201609/04_100255_vnstat785x256.jpg

使用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
...

阅读全文…
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可以基于其他变量及变量值进行变量创建,其允许分类,或者映射多个变量到不同值并存储在一个变量中;
...

阅读全文…
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模块可以限制单个客户端发送请求的速率。

示例配置如下:
http {
     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;
}
geo $http_client_ip $geo {
                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 ...

阅读全文…