• Blog
  • Archives
  • Search
  • Comments
  • Tags
  • Links
  • LianDan
  • RSS

有梦就有快乐[杨恒飞]

Reg | Login

人生旅途慢慢,但有梦就会有快乐!

Total: 73Page 2 of 13‹ Prev1234567Next ›Last »

阅读全文

在nginx上处理一次小型的ddos事件
By coldstar On 2010-06-22, 12:07 PM | Category: WEB服务器 | Comments: 0

nginx的负载能力超强,一般小的ddos是无法击垮一台nginx代理的,所以用nginx来过滤掉一些小型的ddos是完全没有问题。

早上同事负责的一台服务器当机,重起之后又挂掉,他检查过后发现是有一个链接的访问量很大。

我去看了一下,因为这个项目不是公司的项目,所以应用服务器是Windows+IIS,架构采用的是app_squid架构。因为那个访问量大的链接业务上必须加上no-cache头,所以全部透入后台应用服务器,应用服务器招架不住所以频频出问题。

我对IIS根本不熟,况且那台应用服务器已经基本没法正常服务,所以我就在cache上把受攻击的域名指向中层代理,中层代理再转发到应用服务器。这样架构变成了app_nginx_squid架构,然后我就好正常地开始分析。

整理思路,然后按部就班:

先打开日志,看看到底是怎么回事,看过之后发现确实是有一个链接访问量很大,用命令行统计一下,发现这个链接是正常的所有访问请求100倍之多。由上可知,确实就是这个链接访问量超大引起问题,但是这些访问量是不是正常的呢?从它的ip看,并不是同一个ip,这就比较难判断了,如果确实是真实流量,我把它毙掉,那就会有人要追杀我了。

具体原因的干脆先不查,我把它的no-cache头先干掉好了,这样至少不会死机。作为维护人员,那肯定先要想办法让网站正常服务,然后才能去找原因的。

proxy_hide_header Cache-Control;

嗯,这下这个链接就缓存到前端squid了,应用服务器不会死机了,不过这只是临时方法,不是长久之计,因为这样做影响了业务功能。

所以继续分析日志,多加了几项参数到日志中,这时看到这些大量的请求有一个共同点,那就是user-agent都是一样的,都是MSIE 5.01,而IE5并不是主流浏览器。这样看来,这些请求都是同一个客户端恶意发起的,不知道是用了什么垃圾软件。

找到了原因和特征,当然就可以配置把它干掉了,判断一下user-agent,如果是MSIE 5.01就把它丢到另外一个地方去就可以了,比如指向sudone.com,看看能不能抗得住?!

location = /v2/index.php {
include proxy.conf;
if ( $http_user_agent ~* "MSIE 5.01" ) {
proxy_pass http://www.sudone.com;
#access_log /home/logs/1.log main;
}
proxy_pass http://iis.xxx.com;
}

最后开回Cache-Control,访问一下页面,嗯,这回一切正常,业务也没有被修改。

Tags: ddos , nginx

阅读全文

配置IIS支持 WAP
By coldstar On 2010-06-18, 8:59 AM | Category: WEB服务器 | Comments: 0

配置IIS支持 wap

AddType text/vnd.wap.wml .wml
AddType image/vnd.wap.wbmp .wbmp
AddType application/vnd.wap.wmlc .wmlc
AddType text/vnd.wap.wmls .wmls
AddType application/vnd.wap.wmlsc .wmlsc

Read more
Tags: wap

阅读全文

nginx 301 重定向
By coldstar On 2010-06-03, 4:59 PM | Category: WEB服务器 | Comments: 0

nginx rewrite的规则我们了解以后,其实发现做 nginx 301 重定向也非常简单,主要是使用 flag标记 permanent 

flag标记有: 

* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向 地址栏会显示跳转后的地址
* permanent 返回301永久重定向 地址栏会显示跳转后的地址

下面我们举例说明:

我的博客域名为 www.yanghengfei.com 当然输入 yanghengfei.com也可以访问,现在我要将两个域名合并,统一使用 www.yanghengfei.com 具体配置代码如下:

server { 
	listen       80; 
	server_name  www.yanghengfei.com yanghengfei.com; 
	index index.html index.htm index.php; 
	root  /opt/lampp/yanghengfei/www; 
	if ($host != "www.yanghengfei.com" ) {
		rewrite ^(.*) http://www.yanghengfei.com$1 permanent; 
	}
	access_log  off;
}
Tags: 重定向 , 301 , rewrite , nginx

阅读全文

nginx rewrite 参数配置举例
By coldstar On 2010-06-03, 4:50 PM | Category: WEB服务器 | Comments: 1

正则表达式匹配,其中:

* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配,其中:

* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行

flag标记有:

* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向 地址栏会显示跳转后的地址
* permanent 返回301永久重定向 地址栏会显示跳转后的地址
Read more
Tags: rewrite , nginx

阅读全文

php output_buffering
By coldstar On 2010-05-27, 1:25 PM | Category: WEB服务器 | Comments: 0
<?php
header("cache-control:no-cache,must-revalidate");
setcookie("username","宋紫菱",time()+3600);
echo "the username is:".$HTTP_COOKIE_VARS["username"]."\n";
echo "the username is:".$_COOKIE["username"]."\n";
print_r($_COOKIE);
?>

Warning: Cannot modify header information - headers already sent by出错的原因
解决办法很简单,找到 php.ini 把 output_buffering = Off 改为 output_buffering = On 问题即解决。buffering 默认大小为 4096.

原因是setcookie函数必须在在向浏览器输出内容之前首先输出,基于上面这些限制,所以常常会碰到"Undefined index"、"Cannot modify header information - headers already sent by"…等问题,解决"Cannot modify header information - headers already sent by"这种问题的方法就是在产生cookie之前,延缓内容输出到浏览器,因此,您可以在程序的最前方加上ob_star()函数(要求先开启  output_buffering)。

ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车\空格\换行\都会有"Header had all ready send by"的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很多,只要发挥你的想象.

Read more
Tags: output_buffering

阅读全文

nginx优化 突破十万并发
By coldstar On 2010-05-22, 2:36 PM | Category: WEB服务器 | Comments: 0

nginx的安装与基本配置文档网上已经有很多了,但具体讲优化的文章还比较少,偶尔发现有这么一篇《nginx优化 突破十万并发》仔细拜读后,转至此做以收藏,感谢原作的辛苦编写。

一般来说nginx配置文件中对优化比较有作用的为以下几项:

worker_processes 8;

nginx进程数,建议按照cpu数目来指定,一般为它的倍数。

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;


为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。

worker_rlimit_nofile 102400;

这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。

use epoll;

使用epoll的I/O模型,这个不用说了吧。

worker_connections 102400;

每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。

keepalive_timeout 60;

keepalive超时时间。

client_header_buffer_size 4k;

客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。

open_file_cache max=102400 inactive=20s;

这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。

open_file_cache_valid 30s;

这个是指多长时间检查一次缓存的有效信息。

open_file_cache_min_uses 1;

open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

Read more
Tags: 优化 , nginx
Total: 73Page 2 of 13‹ Prev1234567Next ›Last »
  • View Model: Nomal | List
  • Category

    win7 (17) RSS 2.0 订阅这个分类

    Windows (39) RSS 2.0 订阅这个分类

    Linux (51) RSS 2.0 订阅这个分类

    WEB服务器 (73) RSS 2.0 订阅这个分类

    网站架构 (11) RSS 2.0 订阅这个分类

    存储与缓存 (2) RSS 2.0 订阅这个分类

    数据库技术 (20) RSS 2.0 订阅这个分类

    WEB开发 (22) RSS 2.0 订阅这个分类

    网站建设 (28) RSS 2.0 订阅这个分类

    安全相关 (24) RSS 2.0 订阅这个分类

    软件开发 (3) RSS 2.0 订阅这个分类

    网络观察 (20) RSS 2.0 订阅这个分类

    精彩瞬间 (20) RSS 2.0 订阅这个分类

    心情管理 (49) RSS 2.0 订阅这个分类

    个人收藏 (26) RSS 2.0 订阅这个分类

  • Calendar

    « 2010年07月 »
    日 一 二 三 四 五 六
    1 2 3
    4 5 6 7 8 9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31
  • Hot Tags

    nginx win7 iis apache linux mysql 破解 管理 mssql php access 四博新云 seo 加速 驱动 centos w32dasm yum lvs asp mm rewrite gzip resin 漏洞 优化 awk 架构 cache 创业 oracle ip_hash div+css 程序员 感谢google baidu 百度 老公 女人 shutdown 服务器 apache+tomcat 黑竹沟 小小说 tomcat pure-ftpd iis7 工作 mrtg ie8
  • Comments

    学习了,谢谢!
    07-21 - ajcheng

    不知道你这里用的什么备份工具。我...
    07-19 - apple

    牛哈~~~
    07-17 - Lanyd

    仅仅是统计流量意义不大吧,已经有...
    07-17 - Lanyd

    遗憾的是我今天才发现两者的区别,...
    07-14 - coldstar

    好着了,O(∩_∩)O~
    07-13 - mjxhehe

    lvs应用至少还支持包括free...
    07-09 - dayu

    生成的临时文件仅有300M,如果...
    07-05 - coldstar

    请问下,/tmp目录需要多大才可...
    07-05 - llm_leon

    这世道有钱的就越有钱,因为钱生钱...
    06-27 - 爽爽

  • FriendLinks

    99 Roses[叶涛]

    Alibaba DBA Team

    fovweb

    Franky

    MySQL 中文网

    nginx

    sclife

    SEM一家之言

    Zac 的SEO博客

    [支付宝] 冯大辉

    回忆未来[张宴]

    好朋友

    懒人运维

    田逸的博客

    简朝阳 Sky Jian

    网易高级DBA

    脸蛋网

    花的嫁纱

    西西说

    雨·漫步

    More

  • Others

    Article 402, Comment 93.

    Powered by SaBlog-X.

    Designed by Giki+Kula.

    有梦就有快乐[杨恒飞] All rights reserved.

    陕ICP备07009322号