注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

good luck guys

welcome

 
 
 

日志

 
 

Nginx 中文网  

2011-06-13 11:06:51|  分类: nginx |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

2010-04-16

栏目:系统安全 , 访问控制      6,559 views

通过分析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 -HUP `cat $nginx_home/nginx.pid`

通过分析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 -HUP `cat $nginx_home/nginx.pid`

也可以通过分析nginx日志过滤出频繁访问IP,直接用iptables屏蔽这个IP,就用不着重启nginx了,并且屏蔽效果更好。

单个IP的命令是

iptables -I INPUT -s 124.115.0.199 -j DROP

2010-01-11

栏目:安装与配置 , 技巧与优化 , 负载平衡      17,783 views

测试环境:理想论坛(55188).
理想论坛为国内人气最旺的股票论坛,注册会员已超过100万,并以每月60000人的速度稳定递增,每日页面访问量超过200万,并保持稳定增长的趋势,60分钟在线平均约2万多人,最高记录3万3千多。 目前主题超过30万,帖子接近1千万,数据库大小5.8GB,附件总大小大约150GB
之前理想论坛有三台服务器,两台WEB服务器以及一台数据库服务器,访问已经渐渐出现瓶颈,在猪头的建议下,站长决定增加一台服务器放数据库,另外三台做WEB,并且对原有的服务器的操作系统进行升级。
硬件具体情况
MySQL服务器: DualXeon 5335/8GB内存/73G SAS硬盘(RAID0+1)/CentOS5.1-x86_64/MySQL5
三台WEB服务器如下:
N1. Dual Xeon 3.0 2GB 内存
N1. Dual Xeon 3.0 4GB 内存
N1. Dual Xeon 3.0(双核) 4G内存
另外有三块300G的SCSI硬盘准备做RAID5,用来存放附件,四台机器通过内网连接

猪头考虑过的解决方案如下:
1. ZEUS + PHP5 + eAccelerator
2. squid + Apache2 + PHP + eAccelerator
3. nginx + PHP(fastcgi) + eAccelerator
4. nginx + Apache2 + PHP + eAccelerator

栏目:安装与配置 , 技巧与优化      8,914 views

nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效

最关键的一点事,在server的设置里面添加这一行:
listen       80 default;
后面的default参数表示这个是默认虚拟主机。

这个设置非常有用。
比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:
server {
listen       80 default;
return 500;
}

也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:
server {
listen       80 default;
rewrite ^(.*) http://www.myip.net permanent;
}

2009-11-17

栏目:安装与配置      7,839 views

前言
1.    看了张宴的《linux版本的Nginx 0.5.33 + PHP 5.2.5》后,马上找了一台服务器测试了一下,然后加了一个线上的discuz的论坛跑了一下,性能非常的卓越,感叹搜遍整个互联网,就是nginx+php唯一的一篇文档。对于他的文档,我认为:写的非常专业,对于php extensions库也分析的非常透彻。但是一篇专业的文档,也存在一些专业带来的麻烦,就是起点有点高,假如要更新里面的软件包和定义自己的目录,势必需要一点波折。另外不知道为何,最近网站老是打不开。情急之下,小弟重新写了一篇freebsd下面的傻瓜式安装文档。
2.    又结合了平时的一些经验,顺便把如何防卸ddos,并通过对系统的优化,如何来进一步提高nginx的并发数做 一些详解。
3.    由于个人能力有限,错误的地方,还请读者谅解

一、安装软件前的准备
系统的安装:插入freebsd6.2以上的光盘,最小化安装系统,同时安装好ports
二、手动安装nginx+php
1)        进入系统后,准备cvs更新:
1.       cd /usr/ports/net/cvsup-without-gui
2.       cp /usr/share/examples/cvsup/ports-supfile /etc/ports-supfile
3.       # vi /etc/ports-supfile
将其中的#*default host=CHANGE_THIS.FreeBSD.org一行改为
*default host=cvsup4.FreeBSDchina.org
4.       更新ports
/usr/local/bin/cvsup -g -L 2 /etc/ports-supfile
2)        安装mysql

2009-11-10

栏目:系统安全      3,366 views

漏洞描述:
nginx容易引起缓冲区溢出漏洞,因为该应用程序没有对用户提交的数据进行边界检查,攻击者可以利用这个安全漏洞使得受影响的程序执行任意代码,如果代码执行失败,将导致拒绝服务。

影响版本:

nginx 0.8.14
nginx 0.7.61
nginx 0.6.38
nginx 0.5.37
nginx 0

不受影响:

nginx 0.8.15
nginx 0.7.62
nginx 0.6.39
nginx 0.5.38

解决方案

栏目:系统安全 , 访问控制      3,027 views

在windows+iis下,可以设置上传目录,类似:upload,uploadfile,attachments,这样的目录下面无脚本执行权限,从而防止非法用户上传脚本得到webshell
nginx上也很简单,我们使用location。。如下:

location ~ ^/upload/.*\.(php|php5)$
{
deny all;
}

其中upload换为你要设置的目录名字

这条规则的含义是匹配请求连接中开头是/upload/,中间匹配任意字符,结尾匹配.php或者.php5的页面,最后利用deny all禁止访问,这样就防止了上传目录的脚本执行权限

栏目:系统安全 , 访问控制      3,999 views

nginx在80端口接受到访问请求后,会把请求转发给9000端口的php-cgi进行处理

而如果修改php.ini中open_basedir= ../../../../../ ,针对两个不同的网站,www.a.com , www.b.com都会把请求发送给9000处理,而如果先访问www.a.com那么../../../../../就会变成A网站的根目录地址,然后这时候如果你访问www.b.com,那么open_basedir仍然是A网站的根目录,但是对于B来说,又是不允许访问的,所以就造成了,第二个站点打开以后会出现no input files,那么有什么解决办法呢?

我们可以把不同的虚拟主机发送到不同的php-cgi端口进行处理,当然响应的php-fpm配置文件中的open_basedir也不同。。我们来看看怎么配置。。

栏目:系统安全 , 访问控制      3,851 views

Nginx的使用者最近越来越多,很多大型网站也都从Apache或其他平台迁移到了Nginx。但在我使用Nginx的过程中有个问题一直未得到解决,就是如何限制Nginx+PHP的目录权限。

我们知道,在Apache中可以很容易的对虚拟目录进行权限控制,如:
程序代码 程序代码

<VirtualHost www.xpb.cn>
ServerAdmin xiaopb@live.com
DocumentRoot /usr/www/xpb/
ServerName www.xpb.cn:80
ServerAlias www.xpb.cn
ErrorLog logs/default-error_log
php_admin_value open_basedir “/tmp/:/usr/www/xpb/”
</VirtualHost>

关键是后面的这句php_admin_value,这样就限制了php的操作目录仅限于/tmp/和/usr/www/xpb/这两个目录了。对于 Apache虚拟主机来说,这个设置十分有用,结合在php.ini中禁用一些php函数,几乎可以杜绝PHP木马对其他站点及系统的危害。我虽没专业做过Linux下的虚拟主机,但相信各大虚拟主机商也是这么做的。

看来对于Apache最好的办法还是使用“在php.ini中禁用一些危险的php函数和在Apache虚拟主机中配置php_admin_value”的方式来做虚拟主机的安全。

关于Nginx的配置文件,参考了很多资料,好像是不支持php_admin_value open_basedir,也就是Nginx暂时还没有 Apache的 php_myadmin_value这类的设置。如果用Nginx做虚拟主机,各用户之间的目录安全控制如何来做呢?网上很多人说,限制上传文件类型,做好程序安全不就行了么?对,对于自己的站点来说这样完全可以。但如果虚拟主机是给别人用的,又给予了FTP权限,总不能不让人上传php 文件吧。参考以上,如果用Nginx来做虚拟主机,目前看来安全的配置方法是

栏目:技巧与优化      2,854 views

根据观察是因为当nginx处理别名主机的请求时,遇到redirect请求时会附加上主机名,而不是像apache那样保持别名访问。

2009-11-10

栏目:负载平衡      4,429 views

所以初步认为Nginx 比 Apache 负载高10倍是成立的。

然后反复在A B 上同时对C 进行ab -c 50000的压力测试,以模拟小规模的DDOS,结果C的负载能力不降反升,最高去到:
Requests per second:    4678.65 [#/sec] (mean)

最后连上在另一台不同网络的、装有Apache 的机器D上加入ab测试行列 ,却发现结果差很远:
Requests per second:    67.65 [#/sec] (mean)
Time per request:       1478.174 [ms] (mean)

看来ab的测试结果是非常依赖于网络速度,不是很靠谱。
在几台服务器的ab压力下,C系统的资源占用并无明显变化,在测试期间不断刷新测试页观察也没有排队等待的感觉,可见Nginx的确货美价廉。

用A上装了webbench来测试C的并发抗压能力,一边在C上tail -F access.log 来观察,从500到5000的30秒并发都没有问题,发现在测试50000并发时突然出现一片400记录,刷新C的测试页面发现正常,反而是A连不上了。。。一看终端的记录,A上的负载是:
load average: 16717.43, 13663.81, 6606.39
而C的负载不超过个位数

是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.



© 2011 Nginx 中文网 - Powered By WordPress - Top




引文来源  Nginx 中文网
  评论这张
 
阅读(695)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017