<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>haohtml&#039;s blog &#187; nginx</title>
	<atom:link href="http://blog.haohtml.com/index.php/tag/nginx/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.haohtml.com</link>
	<description>haohtml&#039;s life and works blog</description>
	<lastBuildDate>Sat, 31 Jul 2010 10:45:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>张宴《实战Nginx：取代Apache的高性能Web服务器》pdf电子书下载</title>
		<link>http://blog.haohtml.com/index.php/archives/4722</link>
		<comments>http://blog.haohtml.com/index.php/archives/4722#comments</comments>
		<pubDate>Tue, 20 Jul 2010 11:34:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[服务器类]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=4722</guid>
		<description><![CDATA[张宴《实战Nginx：取代Apache的高性能Web服务器》pdf电子书下载 目录介绍： 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 1.4 Nginx与Apache、Lighttpd的综合对比 第2章 Nginx服务器的安装与配置 2.1 安装Nginx服务器所需要的系统资源 2.2 Nginx的下载 2.3 Nginx的安装 2.4 Nginx的启动、停止、平滑重启 2.5 Nginx的平滑重启 2.6 Nginx的信号控制 2.7 Nginx的平滑升级第2部分 进 阶 篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 Nginx的虚拟主机配置 3.3 Nginx的日志文件配置与切割 3.4 Nginx的压缩输出配置 .3.5 Nginx的自动列目录配置 3.6 Nginx的浏览器本地缓存设置 第4章 Nginx与PHP（FastCGI）的安装、配置与优化 4.1 获取相关开源程序 4.2 安装PHP 5.2.10（FastCGI模式） 4.3 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.s135.com/" target="_blank">张宴</a>《<a title="PDF下载" href="http://www.sbear.cn/download/nginx_pdf.tar.gz" target="_blank">实战Nginx：取代Apache的高性能Web服务器</a>》pdf电子书下载</p>
<p>目录介绍：</p>
<p>第1部分 基础篇<br />
第1章 Nginx简介<br />
1.1 常用的Web服务器简介<br />
1.2 Nginx简介<br />
1.3 选择Nginx的理由<br />
1.4 Nginx与Apache、Lighttpd的综合对比<br />
第2章 Nginx服务器的安装与配置<br />
2.1 安装Nginx服务器所需要的系统资源<br />
2.2 Nginx的下载<br />
2.3 Nginx的安装<br />
2.4 Nginx的启动、停止、平滑重启<br />
2.5 Nginx的平滑重启<br />
2.6 Nginx的信号控制<br />
2.7 Nginx的平滑升级<span id="more-4722"></span>第2部分 进 阶 篇<br />
第3章 Nginx的基本配置与优化<br />
3.1 Nginx的完整配置示例<br />
3.2 Nginx的虚拟主机配置<br />
3.3 Nginx的日志文件配置与切割<br />
3.4 Nginx的压缩输出配置<br />
.3.5 Nginx的自动列目录配置<br />
3.6 Nginx的浏览器本地缓存设置<br />
第4章 Nginx与PHP（FastCGI）的安装、配置与优化<br />
4.1 获取相关开源程序<br />
4.2 安装PHP 5.2.10（FastCGI模式）<br />
4.3 安装Nginx 0.8.15<br />
4.4 配置开机自动启动Nginx + PHP<br />
4.5 优化Linux内核参数<br />
4.6 在不停止Nginx服务的情况下平滑变更Nginx配置<br />
4.7 编写每天定时切割Nginx日志的脚本<br />
第5章 Nginx与JSP、ASP.NET、Perl的安装与配置<br />
5.1 Nginx与JSP（Tomcat）在Linux上的安装、配置<br />
5.2 Nginx与ASP.NET（Mono+FastCGI）在Linux上的安装、配置<br />
5.3 Nginx与Perl（FastCGI）在Linux上的安装、配置<br />
第6章 Nginx HTTP负载均衡和反向代理的配置与优化<br />
6.1 什么是负载均衡和反向代理<br />
6.2 常见的Web负载均衡方法<br />
6.3 Nginx负载均衡与反向代理的配置实例<br />
6.4 Nginx负载均衡的HTTP Upstream 模块<br />
6.5 Nginx负载均衡服务器的双机高可用<br />
第7章 Nginx的Rewrite规则编写实例<br />
7.1 什么是Nginx的Rewrite规则<br />
7.2 Nginx Rewrite规则相关指令<br />
7.3 PCRE正则表达式语法<br />
7.4 Nginx的Rewrite规则编写实例<br />
7.5 Nginx与Apache的Rewrite规则实例对比<br />
第8章 Nginx模块开发<br />
8.1 Nginx模块概述<br />
8.2 Nginx模块编写实践<br />
第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块<br />
9.1 什么是Web缓存？<br />
9.2 Nginx的Web缓存服务<br />
9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统<br />
第3部分 实战篇<br />
第10章 Nginx在国内知名网站中的应用案例<br />
10.1 Nginx反向代理与负载均衡类网站应用案例<br />
10.2 Nginx+PHP类网站应用案例<br />
第11章 Nginx的非典型应用实例<br />
11.1 用HTTPS（SSL）构建一个安全的Nginx Web服务器<br />
11.2 采用Nginx搭建FLV视频服务器<br />
11.3 Nginx+PHP+MySQL在小内存VPS服务器上的优化<br />
11.4 采用Nginx搭建正向代理服务器<br />
第4部分 模块篇<br />
第12章 Nginx的核心模块<br />
12.1 主模块指令<br />
12.2 主模块变量<br />
12.3 事件模块指令<br />
第13章 Nginx的标准HTTP模块<br />
13.1 HTTP的核心模块<br />
13.2 HTTP Upstream模块<br />
13.3 Http Access 模块<br />
13.4 HTTP Auth Basic 模块<br />
13.5 Http Autoindex 模块<br />
13.6 Http Browser 模块<br />
13.7 Http Charset 模块<br />
13.8 Http Empty Gif模块<br />
13.9 Http Fcgi 模块<br />
13.10 geo 模块<br />
13.11 Gzip 模块<br />
13.12 Http Headers模块<br />
13.13 Http Index模块<br />
13.14 HTTP Referer模块<br />
13.15 Http Limit Zone模块<br />
13.16 Http Limit Req模块<br />
13.17 Http Log模块<br />
13.18 Http Map模块<br />
13.19 Http Memcached模块<br />
13.20 Http Proxy模块<br />
第14章 Nginx的其他HTTP模块<br />
14.1 Http Addition模块<br />
14.2 Embedded Perl模块<br />
14.3 Flv Stream模块<br />
14.3 flv 指令<br />
14.4 Http Gzip Static模块<br />
14.5 Http Random Index模块<br />
14.6 Http Geo IP模块<br />
14.7 Http RealIp模块<br />
14.8 Http SSL模块<br />
14.9 Http Stub Status模块<br />
14.10 Http Sub模块<br />
14.11 Http Dav模块<br />
14.12 Google Perftools模块<br />
14.13 Http XSLT模块<br />
14.14 Http Secure Link模块<br />
14.15 Http Image Filter模块<br />
第15章 Nginx的邮件模块<br />
15.1 Nginx邮件核心模块<br />
15.2 Nginx邮件认证模块<br />
15.3 Nginx邮件代理模块<br />
15.4 Nginx邮件SSL模块<br />
15.5 Nginx邮件模块配置实例<br />
索引<br />
参考资料</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/4722/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx图片服务器的架构方案</title>
		<link>http://blog.haohtml.com/index.php/archives/3793</link>
		<comments>http://blog.haohtml.com/index.php/archives/3793#comments</comments>
		<pubDate>Thu, 03 Jun 2010 03:50:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[设计重构]]></category>
		<category><![CDATA[系统负载]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=3793</guid>
		<description><![CDATA[图片服务通常数据容量较大，而且访问也频繁，鉴于此，图片服务就会有两种问题，一是存储问题，二是访问量问题。 存储问题就是硬盘容量问题，花钱买硬盘就可以了，看似简单，但着实也是最苦的问题。按目前探索来看，最好的方式是：在任何时刻遇到硬盘空间不够时，买颗硬 盘插上，最多改改配置，就能立刻利用；另外，硬盘要能充分利用，不然图片存储量大再加上备份，很恐怖，最好是每颗硬盘都用上100%的空间。 访问量也是个大问题，如果服务不允许防盗链，那么访问量会引起带宽、服务器压力等问题，有钱的话直接扔CDN，没钱或者有更多的钱，就自己做吧。根据垣古 不变的真理“越老的图，访问量也相对较少”这一点，分成两大部分，一边处理最新的图片，一边处理老旧的图片。最新的图片访问量大，但存储量较少；老图片访 问量低，但存储量大。 大概分析完了，开始制定方案。 一、拟定一个存储目录规则： 在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成：/200810/16/a/b/abcde.jpg或者/2008 /10/16/a/b/abcde.jpg。按日期制定这个目录规则后，就可以按年月来拆机器了。 二、分机器，分硬盘 按之前的计划，分成两个组，一组服务器用lvs做负载均衡负责新图片；另一组服务器做旧图片访问和备份。新图机器找几台好点的服务器，SCSI硬盘；旧图 机器没太大要求，PC机就行，找够硬盘就可以，现在IDE的1T硬盘也不太贵，最好再搭个raid就省事了，最主要是这些机器要多。 照这个图，搭一搭 说明一下： 1、图片服务通过lvs作为入口，处理能力上还是有保障的。 2、利用nginx直接对外服务，不必用squid。 3、图中的红线是指主nginx会将/2006和/2007年的图片分别代理到两台存档服务器，如果发现主nginx的cpu占用比较大，那么可以考虑使 用nginx的proxy_store将图片存到主服务器上，定期清理。 4、图中有一台存储分配服务器，作为图片服务更新图片的统一入口，有新图片或者修改图片的话，由这台服务器负责将图片放到正确的服务器上去。 5、旧图片服务器当前用年份来划分，每年增加两台服务器，亦可是加两块硬盘，注意，不要相信raid，一定要有两台机器，地理上分在两个城市则更好。 6、因为旧数据2006和2007年的数据基本上是没有变化的，所以假如硬盘够大，那么可以把两年的数据合并在一起。 7、如果细心定制，那么旧图片服务器的硬盘100%塞满是可以的，旧数据的容量基本上不会大幅增长，小小预留1-2G空间就可以了。 使用这个架构的话，到了2009年，我会把2008年的数据想办法迁到旧图服务器上，硬盘不够的话，加硬盘就可以了。如果图片量实在太大，主服务器连一年 的数据都装不下，那可以用启用月份来划分；如果一个月都装不下了，那也太夸张了，那就启用日期吧；如果一天的数据都装不下，那就◎＃￥％……※。]]></description>
			<content:encoded><![CDATA[<p>图片服务通常数据容量较大，而且访问也频繁，鉴于此，图片服务就会有两种问题，一是存储问题，二是访问量问题。</p>
<p>存储问题就是硬盘容量问题，花钱买硬盘就可以了，看似简单，但着实也是最苦的问题。按目前探索来看，最好的方式是：在任何时刻遇到硬盘空间不够时，买颗硬 盘插上，最多改改配置，就能立刻利用；另外，硬盘要能充分利用，不然图片存储量大再加上备份，很恐怖，最好是每颗硬盘都用上100%的空间。<span id="more-3793"></span></p>
<p>访问量也是个大问题，如果服务不允许防盗链，那么访问量会引起带宽、服务器压力等问题，有钱的话直接扔CDN，没钱或者有更多的钱，就自己做吧。根据垣古 不变的真理“越老的图，访问量也相对较少”这一点，分成两大部分，一边处理最新的图片，一边处理老旧的图片。最新的图片访问量大，但存储量较少；老图片访 问量低，但存储量大。</p>
<p>大概分析完了，开始制定方案。</p>
<p>一、拟定一个存储目录规则：</p>
<p>在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成：/200810/16/a/b/abcde.jpg或者/2008 /10/16/a/b/abcde.jpg。按日期制定这个目录规则后，就可以按年月来拆机器了。</p>
<p>二、分机器，分硬盘</p>
<p>按之前的计划，分成两个组，一组服务器用lvs做负载均衡负责新图片；另一组服务器做旧图片访问和备份。新图机器找几台好点的服务器，SCSI硬盘；旧图 机器没太大要求，PC机就行，找够硬盘就可以，现在IDE的1T硬盘也不太贵，最好再搭个raid就省事了，最主要是这些机器要多。</p>
<p>照这个图，搭一搭</p>
<p><img src="http://www.sudone.com/images/pic_nginx.png" alt="" /></p>
<p>说明一下：</p>
<p>1、图片服务通过lvs作为入口，处理能力上还是有保障的。<br />
2、利用nginx直接对外服务，不必用squid。<br />
3、图中的红线是指主nginx会将/2006和/2007年的图片分别代理到两台存档服务器，如果发现主nginx的cpu占用比较大，那么可以考虑使 用nginx的proxy_store将图片存到主服务器上，定期清理。<br />
4、图中有一台存储分配服务器，作为图片服务更新图片的统一入口，有新图片或者修改图片的话，由这台服务器负责将图片放到正确的服务器上去。<br />
5、旧图片服务器当前用年份来划分，每年增加两台服务器，亦可是加两块硬盘，注意，不要相信raid，一定要有两台机器，地理上分在两个城市则更好。<br />
6、因为旧数据2006和2007年的数据基本上是没有变化的，所以假如硬盘够大，那么可以把两年的数据合并在一起。<br />
7、如果细心定制，那么旧图片服务器的硬盘100%塞满是可以的，旧数据的容量基本上不会大幅增长，小小预留1-2G空间就可以了。</p>
<p>使用这个架构的话，到了2009年，我会把2008年的数据想办法迁到旧图服务器上，硬盘不够的话，加硬盘就可以了。如果图片量实在太大，主服务器连一年 的数据都装不下，那可以用启用月份来划分；如果一个月都装不下了，那也太夸张了，那就启用日期吧；如果一天的数据都装不下，那就◎＃￥％……※。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/3793/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新型的大型bbs架构（squid+nginx）</title>
		<link>http://blog.haohtml.com/index.php/archives/3784</link>
		<comments>http://blog.haohtml.com/index.php/archives/3784#comments</comments>
		<pubDate>Thu, 03 Jun 2010 03:27:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[设计重构]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=3784</guid>
		<description><![CDATA[这个架构基 于squid、nginx和lvs等技术，从架构上对bbs进行全面优化和保护， 有如下特点： 1、高性能：所有的点击基本上全部由前端缓存负责，提供最快速的处理。 2、高保障度：不需考虑应用程序稳定与否、程序语言是何种、数据库是何种，都能从架构上保证稳定。 3、高可用性：对应用程序的修改达到最简化：在程序的某些地方加入清缓存的语句即可，当然还需要做页面静态化的工作和统计工作。 这个架构的特点和一些流程的说明： 1、主域名和图片域名分离 域名分离可以使流量分离，缓存策略分离等等，好处诸多。bbs初期一定要做好规划，将图片用另外的域名独立服务，即使没有足够机器，域名也要先分 开。另 外，图片服务器可以使用有别于主域名的另一个域名，一个好处是可以减少读取cookie对图片服务器的压力，另一个是提高安全性，避免cookie泄露。 首先看图，这个图比较大： 2、使用LVS作为前端、二级代理和数据库的访问入口 使用LVS作为入口，比其他任何一种方式都来得更优质。首先LVS的负载能力很强，因为它工作在网络协议的第4层，使用虚拟ip技术，所以它本身并 不担负 任何流量的处理，仅仅是一个封包转发的功能；第二，LVS的配置相对简单而且稳定，一般去调整的几率比较低，也减少了因人为等因素而出现故障；第 三，LVS可以处理任何端口的负载均衡，所以它基本可以做所有服务的负载均衡和容错。在这个架构中，除了处理http的80端口之外，LVS也处理了数据 库mysql的3306端口，在数据库这个应用中是采用的双机热备策略。 3、使用nginx+squid作为最前端的缓存组合 在这个架构中，是最能体现app_nginx_squid_nginx架构的优势的。在这个架构中的bbs运行在缓存上，用户每发布一张帖子，都需 要使用 purge指令清除该帖子的缓存，如果是squid在最前端，那么每次发布一张帖子，都需要在所有的squid中调用purge指令，这样在机器比较多的 时候，purge将成为一个巨大的压力。 所以在这里将nginx放在最前端并使用手工url_hash的方式分流，将经常需要purge的帖子页面和列表页面按一个url对应一台 squid的策 略，分布到各台squid上，并提供了一台或一组backup的squid，个别squid出现异常时将自动使用backup的机器继续提供一段时间的服 务直到其正常。在这样的架构下，purge就不再是关键问题，因为一个url只会对应到一台机器上，所以purge的时候，后端app_server找到 对应的机器就可以了。 可以看到在前端中还有一台nginx(purge)的机器，这台机器是专用于purge的，只要发送purge指令和需要清除的url到这台机器， 就可以 找到相应的服务器并清除缓存了。另外，purge时还需要清理backup机器上的缓存，所以无论前端机器增加到多少，purge指令只会在2台机器上执 行，如果backup机器使用到2-3台，purge指令就会在3-4台机器上执行，仍然在可接受范围之内。 nginx作为前端，另有的好处： 1/使用nginx的日志统计点击量非常方便 2/nginx也可作为缓存，一般可以直接负责favicon.ico和logo等固定的小图片 4、基于nginx的中层代理 nginx中层代理的优势，在： nginx和squid配合搭建的web服务器前端系统 这篇文章中有解释。 在这个架构中，假如后端的app_server上把帖子页和列表页直接生成了静态页面，那么使用中层代理再做一次url_hash，将可以解决后端 app_server的硬盘容量的压力，但是如果使用到url_hash的话，那做容错就相对麻烦了。所以建议不要采用生成静态页的方式，后端的压力一般 不会非常的大，所以没有必要生成静态页。假如前端squid的命中率实在太低下，造成大量穿透，可以考虑使用二级代理暂顶。 5、基于LVS的数据库双机热备 在这个架构中，因为大量的并发和访问量都由前端的缓存处理掉了，所以后端的mysql主要压力来自于数据的写入，所以压力并不是非常大，并且负载比 较稳 定，一般不会随着访问量上升而提高过快，估计目前一台64位的机器，加满内存并使用高速的硬盘，前端负载数亿访问量时数据库都不会出现性能问题。在数据库 这方面应主要考虑故障恢复，因为数据库崩溃的话，按照一般使用备份恢复的做法，耗时很长而且难免丢失数据，是很棘手的问题。使用双机热备的方案，出现故障 时首先可由一台时刻同步着的备用数据库即刻充当主数据库，然后卸下的数据库可以有充分的时间对其进行维修，所以是个很安全有效的办法。 当然，数据库的优化还是要细心做的，参考： mysql性能的检查和调优方法 细心地调一遍，性能会好很多。 6、图片服务器 图片服务器我在这个架构中没有特别详细的介绍，在大型的bbs系统下，图片常常会出现容灾现象??图片数量严重超过了单台前端服务器容纳能力，导致 前端服务器命中率低下。处理容灾问题也是非常棘手的，往后会有更详细的介绍。 7、简单的点击量统计办法 [...]]]></description>
			<content:encoded><![CDATA[<div>
<div>
<p style="text-align: left;">这个架构基 于squid、nginx和lvs等技术，从架构上对bbs进行全面优化和保护， 有如下特点：</p>
<p>1、高性能：所有的点击基本上全部由前端缓存负责，提供最快速的处理。</p>
<p>2、高保障度：不需考虑应用程序稳定与否、程序语言是何种、数据库是何种，都能从架构上保证稳定。</p>
<p>3、高可用性：对应用程序的修改达到最简化：在程序的某些地方加入清缓存的语句即可，当然还需要做页面静态化的工作和统计工作。</p>
<p>这个架构的特点和一些流程的说明：</p>
<p>1、主域名和图片域名分离</p>
<p>域名分离可以使流量分离，缓存策略分离等等，好处诸多。bbs初期一定要做好规划，将图片用另外的域名独立服务，即使没有足够机器，域名也要先分 开。另  外，图片服务器可以使用有别于主域名的另一个域名，一个好处是可以减少读取cookie对图片服务器的压力，另一个是提高安全性，避免cookie泄露。<span id="more-3784"></span></p>
<p>首先看图，这个图比较大：</p>
<p style="text-align: center;"><a href="http://img.fovweb.com/2009/10/archi_bbs.png"><img title="archi_bbs" src="http://img.fovweb.com/2009/10/archi_bbs.png" alt="archi_bbs" width="500" /></a></p>
<p>2、使用LVS作为前端、二级代理和数据库的访问入口</p>
<p>使用LVS作为入口，比其他任何一种方式都来得更优质。首先LVS的负载能力很强，因为它工作在网络协议的第4层，使用虚拟ip技术，所以它本身并 不担负 任何流量的处理，仅仅是一个封包转发的功能；第二，LVS的配置相对简单而且稳定，一般去调整的几率比较低，也减少了因人为等因素而出现故障；第   三，LVS可以处理任何端口的负载均衡，所以它基本可以做所有服务的负载均衡和容错。在这个架构中，除了处理http的80端口之外，LVS也处理了数据  库mysql的3306端口，在数据库这个应用中是采用的双机热备策略。</p>
<p>3、使用nginx+squid作为最前端的缓存组合</p>
<p>在这个架构中，是最能体现app_nginx_squid_nginx架构的优势的。在这个架构中的bbs运行在缓存上，用户每发布一张帖子，都需 要使用  purge指令清除该帖子的缓存，如果是squid在最前端，那么每次发布一张帖子，都需要在所有的squid中调用purge指令，这样在机器比较多的  时候，purge将成为一个巨大的压力。</p>
<p>所以在这里将nginx放在最前端并使用手工url_hash的方式分流，将经常需要purge的帖子页面和列表页面按一个url对应一台 squid的策  略，分布到各台squid上，并提供了一台或一组backup的squid，个别squid出现异常时将自动使用backup的机器继续提供一段时间的服   务直到其正常。在这样的架构下，purge就不再是关键问题，因为一个url只会对应到一台机器上，所以purge的时候，后端app_server找到  对应的机器就可以了。</p>
<p>可以看到在前端中还有一台nginx(purge)的机器，这台机器是专用于purge的，只要发送purge指令和需要清除的url到这台机器， 就可以  找到相应的服务器并清除缓存了。另外，purge时还需要清理backup机器上的缓存，所以无论前端机器增加到多少，purge指令只会在2台机器上执  行，如果backup机器使用到2-3台，purge指令就会在3-4台机器上执行，仍然在可接受范围之内。</p>
<p>nginx作为前端，另有的好处：</p>
<p>1/使用nginx的日志统计点击量非常方便<br />
2/nginx也可作为缓存，一般可以直接负责favicon.ico和logo等固定的小图片</p>
<p>4、基于nginx的中层代理</p>
<p>nginx中层代理的优势，在：</p>
<p><a href="http://www.fovweb.com/web/nginx-and-squid.html" target="_blank">nginx和squid配合搭建的web服务器前端系统</a></p>
<p>这篇文章中有解释。</p>
<p>在这个架构中，假如后端的app_server上把帖子页和列表页直接生成了静态页面，那么使用中层代理再做一次url_hash，将可以解决后端   app_server的硬盘容量的压力，但是如果使用到url_hash的话，那做容错就相对麻烦了。所以建议不要采用生成静态页的方式，后端的压力一般  不会非常的大，所以没有必要生成静态页。假如前端squid的命中率实在太低下，造成大量穿透，可以考虑使用二级代理暂顶。</p>
<p>5、基于LVS的数据库双机热备</p>
<p>在这个架构中，因为大量的并发和访问量都由前端的缓存处理掉了，所以后端的mysql主要压力来自于数据的写入，所以压力并不是非常大，并且负载比 较稳  定，一般不会随着访问量上升而提高过快，估计目前一台64位的机器，加满内存并使用高速的硬盘，前端负载数亿访问量时数据库都不会出现性能问题。在数据库   这方面应主要考虑故障恢复，因为数据库崩溃的话，按照一般使用备份恢复的做法，耗时很长而且难免丢失数据，是很棘手的问题。使用双机热备的方案，出现故障  时首先可由一台时刻同步着的备用数据库即刻充当主数据库，然后卸下的数据库可以有充分的时间对其进行维修，所以是个很安全有效的办法。</p>
<p>当然，数据库的优化还是要细心做的，参考：</p>
<p><a href="http://www.fovweb.com/web/mysql-performance.html" target="_blank">mysql性能的检查和调优方法</a></p>
<p>细心地调一遍，性能会好很多。</p>
<p>6、图片服务器</p>
<p>图片服务器我在这个架构中没有特别详细的介绍，在大型的bbs系统下，图片常常会出现容灾现象??图片数量严重超过了单台前端服务器容纳能力，导致 前端服务器命中率低下。处理容灾问题也是非常棘手的，往后会有更详细的介绍。</p>
<p>7、简单的点击量统计办法</p>
<p>1/使用js的script标签访问另一（台）组服务器的空文件，然后定期向数据库更新<br />
2/在前端的nginx上直接开启日志功能，按需要统计点击量的链接规则进行记录，然后定期更新数据库</p>
<p>FROM:http://sudone.com/archie/archi_bbs.html</p></div>
</div>
<div>原文链接：<a href="http://shichenwei1977.blog.163.com/blog/static/1175931920101152124190" target="_blank">http://shichenwei1977.blog.163.com/blog/static/1175931920101152124190</a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/3784/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx文件类型错误解析漏洞</title>
		<link>http://blog.haohtml.com/index.php/archives/3674</link>
		<comments>http://blog.haohtml.com/index.php/archives/3674#comments</comments>
		<pubDate>Fri, 21 May 2010 05:49:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[杀毒安全]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[安全]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=3674</guid>
		<description><![CDATA[漏洞介绍：nginx是一款高性能的web服务器，使用非常广泛，其不仅经常被用作反向代理，也可以非常好的支持PHP的运行。80sec发现 其中存在一个较为严重的安全问题，默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析，这将导致严重的安全问题，使得恶意的攻击者可 能攻陷支持php的nginx服务器。 漏洞分析：nginx默认以cgi的方式支持php的运行，譬如在配置文件当中可以以 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; } 的方式支持对php的解析，location对请求进行选择的时候会使用URI环境变量进行选择，其中传递到后端Fastcgi的关键变量 SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定，而通过分析可以看 到$fastcgi_script_name是直接由URI环境变量控制的，这里就是产生问题的点。而为了较好的支持PATH_INFO的提取，在PHP 的配置选项里存在cgi.fix_pathinfo选项，其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。 那么假设存在一个http://www.80sec.com/80sec.jpg，我们以如下的方式去访问 http://www.80sec.com/80sec.jpg/80sec.php 将会得到一个URI /80sec.jpg/80sec.php 经过location指令，该请求将会交给后端的fastcgi处理，nginx为其设置环境变量SCRIPT_FILENAME，内容为 /scripts/80sec.jpg/80sec.php 而在其他的webserver如lighttpd当中，我们发现其中的SCRIPT_FILENAME被正确的设置为 /scripts/80sec.jpg 所以不存在此问题。 后端的fastcgi在接受到该选项时，会根据fix_pathinfo配置决定是否对SCRIPT_FILENAME进行额外的处理，一般情况下如果不 对fix_pathinfo进行设置将影响使用PATH_INFO进行路由选择的应用，所以该选项一般配置开启。Php通过该选项之后将查找其中真正的脚 本文件名字，查找的方式也是查看文件是否存在，这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别为 /scripts/80sec.jpg和80sec.php 最后，以/scripts/80sec.jpg作为此次请求需要执行的脚本，攻击者就可以实现让nginx以php来解析任何类型的文件了。 POC： 访问一个nginx来支持php的站点，在一个任何资源的文件如robots.txt后面加上/80sec.php，这个时候你可以看到如下的区别： 访问http://www.80sec.com/robots.txt HTTP/1.1 200 OK Server: nginx/0.6.32 Date: Thu, 20 May 2010 10:05:30 GMT Content-Type: text/plain [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>漏洞介绍：nginx是一款高性能的web服务器，使用非常广泛，其不仅经常被用作反向代理，也可以非常好的支持PHP的运行。80sec发现 其中存在一个较为严重的安全问题，默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析，这将导致严重的安全问题，使得恶意的攻击者可 能攻陷支持php的nginx服务器。<span id="more-3674"></span><br />
漏洞分析：nginx默认以cgi的方式支持php的运行，譬如在配置文件当中可以以</p>
<p><code><br />
location ~ \.php$ {<br />
root           html;<br />
fastcgi_pass   127.0.0.1:9000;<br />
fastcgi_index  index.php;<br />
fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;<br />
include        fastcgi_params;<br />
}<br />
</code><br />
的方式支持对php的解析，location对请求进行选择的时候会使用URI环境变量进行选择，其中传递到后端Fastcgi的关键变量 SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定，而通过分析可以看 到$fastcgi_script_name是直接由URI环境变量控制的，这里就是产生问题的点。而为了较好的支持PATH_INFO的提取，在PHP 的配置选项里存在cgi.fix_pathinfo选项，其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。<br />
那么假设存在一个http://www.80sec.com/80sec.jpg，我们以如下的方式去访问</p>
<p>http://www.80sec.com/80sec.jpg/80sec.php</p>
<p>将会得到一个URI<br />
<code><br />
/80sec.jpg/80sec.php<br />
</code><br />
经过location指令，该请求将会交给后端的fastcgi处理，nginx为其设置环境变量SCRIPT_FILENAME，内容为<br />
<code><br />
/scripts/80sec.jpg/80sec.php<br />
</code><br />
而在其他的webserver如lighttpd当中，我们发现其中的SCRIPT_FILENAME被正确的设置为<br />
<code><br />
/scripts/80sec.jpg<br />
</code><br />
所以不存在此问题。<br />
后端的fastcgi在接受到该选项时，会根据fix_pathinfo配置决定是否对SCRIPT_FILENAME进行额外的处理，一般情况下如果不 对fix_pathinfo进行设置将影响使用PATH_INFO进行路由选择的应用，所以该选项一般配置开启。Php通过该选项之后将查找其中真正的脚 本文件名字，查找的方式也是查看文件是否存在，这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别为<br />
<code><br />
/scripts/80sec.jpg和80sec.php<br />
</code><br />
最后，以/scripts/80sec.jpg作为此次请求需要执行的脚本，攻击者就可以实现让nginx以php来解析任何类型的文件了。</p>
<p>POC：	 访问一个nginx来支持php的站点，在一个任何资源的文件如robots.txt后面加上/80sec.php，这个时候你可以看到如下的区别：</p>
<p>访问http://www.80sec.com/robots.txt<br />
<code><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.6.32<br />
Date: Thu, 20 May 2010 10:05:30 GMT<br />
Content-Type: text/plain<br />
Content-Length: 18<br />
Last-Modified: Thu, 20 May 2010 06:26:34 GMT<br />
Connection: keep-alive<br />
Keep-Alive: timeout=20<br />
Accept-Ranges: bytes<br />
</code><br />
访问访问http://www.80sec.com/robots.txt/80sec.php<br />
<code><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.6.32<br />
Date: Thu, 20 May 2010 10:06:49 GMT<br />
Content-Type: text/html<br />
Transfer-Encoding: chunked<br />
Connection: keep-alive<br />
Keep-Alive: timeout=20<br />
X-Powered-By: PHP/5.2.6<br />
</code><br />
其中的Content-Type的变化说明了后端负责解析的变化，该站点就可能存在漏洞。</p>
<p>漏洞厂商：http://www.nginx.org</p>
<p>解决方案：</p>
<p>我们已经尝试联系官方，但是此前你可以通过以下的方式来减少损失<br />
<code><br />
关闭cgi.fix_pathinfo为0<br />
</code><br />
或者<br />
<code><br />
if  ( $fastcgi_script_name ~ \..*\/.*php )  {<br />
return 403;<br />
}<br />
</code></p>
<p>PS: 鸣谢<a href="http://www.laruence.com/2010/05/20/1495.html">laruence</a>大 牛在分析过程中给的帮助</p>
<p>来源:<a href="http://www.80sec.com/nginx-securit.html" target="_blank">http://www.80sec.com/nginx-securit.html</a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/3674/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Nginx作为Web服务器的国内网站[原创]</title>
		<link>http://blog.haohtml.com/index.php/archives/3237</link>
		<comments>http://blog.haohtml.com/index.php/archives/3237#comments</comments>
		<pubDate>Fri, 02 Apr 2010 00:56:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[服务器类]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/index.php/archives/3237</guid>
		<description><![CDATA[　　[文章作者：张宴 本文版本：v1.1 最后修改：2008.06.19 转载请注明原文链接：http://blog.s135.com/post/352/] 　　Nginx 超越Apache的高性能和稳定性，使得国内使用 Nginx 作为 Web 服务器的网站也越来越多，其中有新浪、网易、腾讯等门户网站，六间房、酷6等视频分享网站，Discuz!、水木社区等知名论坛，豆瓣、YUPOO等新兴Web 2.0网站。 　　Nginx 在国内的应用正在不断发展壮大！ 　　一、使用 Nginx 运行 PHP(FastCGI) 程序的网站： 　　1、六间房视频（http://www.6.cn/）：nginx/0.6.14 + PHP [root@new-host ~]# curl &#8211;head http://6.cn/reg.php HTTP/1.0 200 OK Server: nginx/0.6.14 Date: Wed, 18 Jun 2008 00:58:20 GMT Content-Type: text/html Vary: Accept-Encoding X-Cache: MISS from YZ-W-146 X-Cache-Lookup: MISS from YZ-W-146:80 Via: 1.0 YZ-W-146 (squid/3.0.STABLE1.dev) Connection: [...]]]></description>
			<content:encoded><![CDATA[<p>　　[文章作者：张宴 本文版本：v1.1 最后修改：2008.06.19 转载请注明原文链接：<a href="http://blog.s135.com/post/352/" target="_blank">http://blog.s135.com/post/352/</a>]</p>
<p>　　Nginx <a href="http://blog.s135.com/read.php/351.htm" target="_blank">超越Apache的高性能和稳定性</a>，使得国内使用 Nginx 作为 Web 服务器的网站也越来越多，其中有新浪、网易、腾讯等门户网站，六间房、酷6等视频分享网站，Discuz!、水木社区等知名论坛，豆瓣、YUPOO等新兴Web 2.0网站。</p>
<p>　　Nginx 在国内的应用正在不断发展壮大！<span id="more-3237"></span></p>
<p>　　<strong>一、使用 Nginx 运行 PHP(FastCGI) 程序的网站：</strong></p>
<p>　　1、六间房视频（<a href="http://www.6.cn/" target="_blank">http://www.6.cn/</a>）：nginx/0.6.14 + PHP</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://6.cn/reg.php" target="_blank">http://6.cn/reg.php</a><br />
HTTP/1.0 200 OK<br />
Server: nginx/0.6.14<br />
Date: Wed, 18 Jun 2008 00:58:20 GMT<br />
Content-Type: text/html<br />
Vary: Accept-Encoding<br />
X-Cache: MISS from YZ-W-146<br />
X-Cache-Lookup: MISS from YZ-W-146:80<br />
Via: 1.0 YZ-W-146 (squid/3.0.STABLE1.dev)<br />
Connection: close</div>
<p>　　2、Discuz!官方论坛（<a href="http://www.discuz.net/" target="_blank">http://www.discuz.net/</a>）：nginx/0.7.2 + PHP/5.2.6</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://www.discuz.net/index.php" target="_blank">http://www.discuz.net/index.php</a><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.7.2<br />
Date: Wed, 18 Jun 2008 00:57:16 GMT<br />
Content-Type: text/html<br />
Transfer-Encoding: chunked<br />
Connection: keep-alive<br />
X-Powered-By: PHP/5.2.6<br />
Set-Cookie: dznet_sid=Ek9XYc; expires=Wed, 25-Jun-2008 00:57:16 GMT; path=/; domain=.discuz.net</div>
<p>　　3、互联星空播客[新浪服务器]（<a href="http://you.video.vnet.cn/" target="_blank">http://you.video.vnet.cn/</a>）：nginx/0.5.33 + PHP/5.2.5</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://you.video.vnet.cn/pg/user/userHead.js.php" target="_blank">http://you.video.vnet.cn/pg/user/userHead.js.php</a><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.5.33<br />
Content-Type: text/html; charset=gb2312<br />
X-Powered-By: PHP/5.2.5<br />
Expires: Sun, 13 Jul 2008 05:43:16 GMT<br />
Last-Modified: Fri, 13 Jun 2008 05:43:16GMT<br />
Content-Encoding: gzip<br />
Content-Length: 22403<br />
Date: Wed, 18 Jun 2008 01:09:33 GMT<br />
X-Varnish: 1426517043 1413292132<br />
Age: 415577<br />
Via: 1.1 varnish<br />
Connection: keep-alive</div>
<p><a name="entrymore"></a><br />
　　4、水木社区（<a href="http://www.newsmth.net/" target="_blank">http://www.newsmth.net/</a>）：nginx/0.5.35 + PHP</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://www.newsmth.net/img_rand/img_rand.php" target="_blank">http://www.newsmth.net/img_rand/img_rand.php</a><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.5.35<br />
Date: Wed, 18 Jun 2008 00:59:01 GMT<br />
Content-Type: image/png<br />
Transfer-Encoding: chunked<br />
Connection: keep-alive<br />
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0<br />
Expires: Thu, 19 Nov 1981 08:52:00 GMT<br />
Set-Cookie: PHPSESSID=fbb54a90ff0d42f92f49978512902a20; expires=Wednesday, 18-Jun-08 01:59:01 GMT; path=/<br />
Pragma: no-cache<br />
X-Cache: MISS from <a href="http://www.newsmth.net/" target="_blank">www.newsmth.net</a></div>
<p>　　5、落伍者站长论坛（<a href="http://www.im286.com/" target="_blank">http://www.im286.com/</a>）：nginx/0.6.29 + PHP/5.1.6</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://www.im286.com/" target="_blank">http://www.im286.com/</a><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.6.29<br />
Date: Wed, 18 Jun 2008 02:20:48 GMT<br />
Content-Type: text/html<br />
Transfer-Encoding: chunked<br />
Connection: keep-alive<br />
X-Powered-By: PHP/5.1.6<br />
Set-Cookie: cdb_sid=eO31Jb; expires=Wed, 25-Jun-2008 02:20:48 GMT; path=/</div>
<hr />
　　<strong>二、使用 Nginx 作反向代理、规则过滤的网站：</strong></p>
<p>　　1、新浪博客（<a href="http://blog.sina.com.cn/" target="_blank">http://blog.sina.com.cn/</a>）：nginx/0.5.35</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://blog.sina.com.cn/" target="_blank">http://blog.sina.com.cn/</a><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.5.35<br />
Date: Wed, 18 Jun 2008 01:18:50 GMT<br />
Content-Type: text/html<br />
Content-Length: 491279<br />
Last-Modified: Wed, 18 Jun 2008 01:14:16 GMT<br />
Connection: keep-alive<br />
Expires: Wed, 18 Jun 2008 01:19:20 GMT<br />
Cache-Control: max-age=30<br />
Accept-Ranges: bytes</div>
<p>　　2、YUPOO相册（<a href="http://www.yupoo.com/" target="_blank">http://www.yupoo.com/</a>）：nginx/0.5.35</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://www.yupoo.com/" target="_blank">http://www.yupoo.com/</a><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.5.35<br />
Date: Wed, 18 Jun 2008 01:58:04 GMT<br />
Content-Type: text/html;charset=UTF-8<br />
Transfer-Encoding: chunked<br />
Connection: keep-alive<br />
Set-Cookie: JSESSIONID=EC1A7935-4C66-B834-8B5B-495E958A6B53; Domain=.yupoo.com; Path=/<br />
Content-Language: zh-CN</div>
<p> </p>
<hr />
　　<strong>三、使用 Nginx 运行静态HTML页、图片、FLV视频的网站：</strong></p>
<p>　　1、网易新闻（<a href="http://news.163.com/" target="_blank">http://news.163.com/</a>）：nginx/0.6.31</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://news.163.com/" target="_blank">http://news.163.com/</a><br />
HTTP/1.0 200 OK<br />
Server: nginx/0.6.31<br />
Date: Wed, 18 Jun 2008 01:17:04 GMT<br />
Content-Type: text/html; charset=GBK<br />
Expires: Wed, 18 Jun 2008 01:20:04 GMT<br />
Cache-Control: max-age=180<br />
X-Cache: MISS from cgi-gzip.163.com<br />
Content-Length: 259923<br />
Vary: Accept-Encoding<br />
Age: 74<br />
X-Cache: HIT from news.163.com<br />
Connection: close</div>
<p>　　2、酷6网（<a href="http://www.ku6.com/" target="_blank">http://www.ku6.com/</a>）视频服务器：nginx/0.5.36</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://video.ku6.com/" target="_blank">http://video.ku6.com/</a><br />
HTTP/1.1 404 Not Found<br />
Server: nginx/0.5.36<br />
Date: Wed, 18 Jun 2008 01:50:06 GMT<br />
Content-Type: text/html; charset=utf-8<br />
Connection: keep-alive<br />
Last-Modified: Sun, 05 Aug 2007 09:49:48 GMT<br />
Accept-Ranges: bytes<br />
Content-Length: 18782<br />
Vary: Accept-Encoding<br />
X-Cache: MISS from CDN-TJ-249</div>
<p>　　3、豆瓣网（<a href="http://www.douban.com/" target="_blank">http://www.douban.com/</a>）：nginx</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://www.douban.com/    " target="_blank">http://www.douban.com/    </a><br />
HTTP/1.1 200 OK<br />
Server: nginx<br />
Date: Wed, 18 Jun 2008 01:56:58 GMT<br />
Content-Type: text/html; charset=utf-8<br />
Status: 200 OK<br />
Content-Length: 30106<br />
Expires: Sun, 1 Jan 2006 01:00:00 GMT<br />
Pragma: no-cache<br />
Cache-Control: must-revalidate, no-cache, private<br />
Set-Cookie: bid=&#8221;rAlrIPo2jl4&#8243;; path=/; domain=.douban.com; expires=Thu, 01-Jan-2009 00:00:00 GMT</div>
<p>　　4、新华网RSS订阅频道（<a href="http://rss.xinhuanet.com/" target="_blank">http://rss.xinhuanet.com/</a>）：nginx</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://rss.xinhuanet.com/" target="_blank">http://rss.xinhuanet.com/</a><br />
HTTP/1.1 200 OK<br />
Server: nginx<br />
Date: Wed, 18 Jun 2008 01:18:00 GMT<br />
Content-Type: text/xml<br />
Content-Length: 4592<br />
Last-Modified: Mon, 26 Jun 2006 09:33:54 GMT<br />
Connection: keep-alive<br />
Expires: Wed, 18 Jun 2008 01:24:00 GMT<br />
Cache-Control: max-age=360<br />
Accept-Ranges: bytes</div>
<p>　　5、迅雷安全中心（<a href="http://safe.xunlei.com/" target="_blank">http://safe.xunlei.com/</a>）：nginx/0.6.31</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://safe.xunlei.com/" target="_blank">http://safe.xunlei.com/</a><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.6.31<br />
Date: Wed, 18 Jun 2008 02:05:54 GMT<br />
Content-Type: text/html; charset=gb2312<br />
Content-Length: 13060<br />
Last-Modified: Thu, 12 Jun 2008 12:13:03 GMT<br />
Connection: keep-alive<br />
Keep-Alive: timeout=30<br />
Expires: Wed, 25 Jun 2008 02:05:54 GMT<br />
Cache-Control: max-age=604800<br />
Accept-Ranges: bytes</div>
<p>　　6、腾讯3G下载（<a href="http://down.3g.qq.com/" target="_blank">http://down.3g.qq.com/</a>）：nginx/0.5.33</p>
<div style="BORDER-RIGHT: #00a0c6 1px dashed; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 5px 5px 0px; BORDER-LEFT: #00a0c6 1px dashed; PADDING-TOP: 3px; BORDER-BOTTOM: #00a0c6 1px dashed; BACKGROUND-COLOR: #ffffff">[root@new-host ~]# curl &#8211;head <a href="http://down.3g.qq.com/" target="_blank">http://down.3g.qq.com/</a><br />
HTTP/1.1 403 Forbidden<br />
Server: nginx/0.5.33<br />
Date: Thu, 19 Jun 2008 05:50:44 GMT<br />
Content-Type: text/html<br />
Content-Length: 169<br />
Connection: keep-alive</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/3237/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Nginx轻松实现开源负载均衡──9 月20日在ChinaUnix技术沙龙上的演讲PPT[原创]</title>
		<link>http://blog.haohtml.com/index.php/archives/3213</link>
		<comments>http://blog.haohtml.com/index.php/archives/3213#comments</comments>
		<pubDate>Thu, 01 Apr 2010 15:31:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[服务器类]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/index.php/archives/3213</guid>
		<description><![CDATA[[文章作者：张宴 本文版本：v1.0 最后修改：2008.09.21 转载请注明原文链接：http://blog.s135.com/post/369/] 9月20日下午，我应邀参加了 ChinaUnix 举办的以“如何搞定服务器负载均衡？”为主题的技术沙龙（http://linux.chinaunix.net/bbs/thread-1019366-1-1.html）， 很高兴能够跟诸多业界精英一起探讨交流，很荣幸能够与Unix资深系统工程师──田逸、HonestQiao，以及F5资深技术工程师──杨明非，同台演 讲。 《使用Nginx轻松实现开源负载均衡》是我的演讲PPT（PowerPiont），现提供下载。 PPT分为四个 部分： 1、介绍Nginx的基本特征，以及使用Nginx做负载均衡器的理由。 2、用实例，来介绍 Nginx负载均衡在大型网站的典型应用。 3、以实现网站动静分离为原型，对NetScaler硬件七层负载均衡和Nginx软件负 载均衡做一个对比。 ①、NetScaler负载均衡交换机动静分离系统架构图 ②、Nginx反向代理负载均衡器动静分离系统架构图 ③、PHP利用Memcached实现session共享，程序无需作任何修改： 修改php.ini（需要memcache.so扩展） session.save_handler = memcache session.save_path = tcp://192.168.1.2:11211 4、介绍如何亲自动手，按照步骤，在“五分钟内搞定 Nginx 负载均衡”。 PPT下载： 下载 文件 点击这里下载文件]]></description>
			<content:encoded><![CDATA[<p>[文章作者：张宴 本文版本：v1.0 最后修改：2008.09.21 转载请注明原文链接：<a href="http://blog.s135.com/post/369/" target="_blank">http://blog.s135.com/post/369/</a>]</p>
<p>9月20日下午，我应邀参加了 <a href="http://www.chinaunix.net/" target="_blank">ChinaUnix</a> 举办的以“如何搞定服务器负载均衡？”为主题的技术沙龙（<a href="http://linux.chinaunix.net/bbs/thread-1019366-1-1.html" target="_blank">http://linux.chinaunix.net/bbs/thread-1019366-1-1.html</a>）， 很高兴能够跟诸多业界精英一起探讨交流，很荣幸能够与Unix资深系统工程师──田逸、HonestQiao，以及F5资深技术工程师──杨明非，同台演 讲。<span id="more-3213"></span></p>
<p><a href="http://blog.s135.com/attachment/200809/chinaunix.gif" target="_blank"><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/chinaunix.gif"><img class="aligncenter size-full wp-image-3214" title="chinaunix" src="http://blog.haohtml.com/wp-content/uploads/2010/04/chinaunix.gif" alt="chinaunix" width="532" height="317" /></a></a></p>
<hr />《使用Nginx轻松实现开源负载均衡》是我的演讲PPT（PowerPiont），现提供下载。</p>
<p><strong>PPT分为四个 部分：</strong><br />
1、介绍Nginx的基本特征，以及使用Nginx做负载均衡器的理由。</p>
<p>2、用实例，来介绍 Nginx负载均衡在大型网站的典型应用。</p>
<p>3、以实现网站动静分离为原型，对NetScaler硬件七层负载均衡和Nginx软件负 载均衡做一个对比。<br />
<a name="entrymore"></a><br />
①、NetScaler负载均衡交换机动静分离系统架构图<br />
<a href="http://blog.haohtml.com/wp-content/uploads/2010/04/netscaler_lb.png"><img class="aligncenter size-full wp-image-3216" title="netscaler_lb" src="http://blog.haohtml.com/wp-content/uploads/2010/04/netscaler_lb.png" alt="netscaler_lb" width="686" height="700" /></a></p>
<p>②、Nginx反向代理负载均衡器动静分离系统架构图<br />
<a href="http://blog.haohtml.com/wp-content/uploads/2010/04/nginx_lb.png"><img class="aligncenter size-full wp-image-3217" title="nginx_lb" src="http://blog.haohtml.com/wp-content/uploads/2010/04/nginx_lb.png" alt="nginx_lb" width="648" height="560" /></a></p>
<p>③、PHP利用Memcached实现session共享，程序无需作任何修改：<br />
修改php.ini（需要memcache.so扩展）</p>
<div style="margin: 5px 5px 0px; padding: 3px; border: 1px dashed #00a0c6; background-color: #ffffff;">session.save_handler =  memcache<br />
session.save_path = tcp://192.168.1.2:11211</div>
<p>4、介绍如何亲自动手，按照步骤，在“五分钟内搞定 Nginx 负载均衡”。</p>
<hr /><strong>PPT下载：</strong></p>
<div>
<div><img src="http://blog.s135.com/template/RuiPai/images/download.gif" alt="" />下载 文件</div>
<div><a href="http://blog.s135.com/attachment/200809/nginx_lb.zip">点击这里下载文件</a></div>
</div>
<p><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/chinaunix_zy.jpg"><img class="aligncenter size-full wp-image-3218" title="chinaunix_zy" src="http://blog.haohtml.com/wp-content/uploads/2010/04/chinaunix_zy.jpg" alt="chinaunix_zy" width="600" height="250" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/3213/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx 简单的负载均衡配置示例[原创]</title>
		<link>http://blog.haohtml.com/index.php/archives/3210</link>
		<comments>http://blog.haohtml.com/index.php/archives/3210#comments</comments>
		<pubDate>Thu, 01 Apr 2010 15:13:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[服务器类]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=3210</guid>
		<description><![CDATA[www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP。 用户访问http://www.s135.com，将其负载均 衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。 用户访问http://blog.s135.com， 将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。 以下为配置文件nginx.conf： 引用 user  www www; worker_processes 10; #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info; #pid        logs/nginx.pid; #最大文件描述 符 worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } http { include       conf/mime.types; default_type  application/octet-stream; keepalive_timeout 120; tcp_nodelay on; upstream [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.s135.com/" target="_blank">www.s135.com</a> 和  blog.s135.com 域名均指向 Nginx 所在的服务器IP。</p>
<p>用户访问<a href="http://www.s135.com/" target="_blank">http://www.s135.com</a>，将其负载均 衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。</p>
<p>用户访问<a href="http://blog.s135.com/" target="_blank">http://blog.s135.com</a>， 将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。</p>
<p>以下为配置文件nginx.conf：<br />
<a name="entrymore"></a><span id="more-3210"></span></p>
<div>
<div>引用</div>
<div>user  www www;</p>
<p>worker_processes 10;</p>
<p>#error_log   logs/error.log;<br />
#error_log  logs/error.log  notice;<br />
#error_log   logs/error.log  info;</p>
<p>#pid        logs/nginx.pid;</p>
<p>#最大文件描述 符<br />
worker_rlimit_nofile 51200;</p>
<p>events<br />
{<br />
use  epoll;</p>
<p>worker_connections 51200;<br />
}</p>
<p>http<br />
{<br />
include       conf/mime.types;<br />
default_type   application/octet-stream;</p>
<p>keepalive_timeout 120;</p>
<p>tcp_nodelay on;</p>
<p>upstream  <a href="http://www.s135.com/" target="_blank">www.s135.com</a> {<br />
server   192.168.1.2:80;<br />
server    192.168.1.3:80;<br />
server   192.168.1.4:80;<br />
server   192.168.1.5:80;<br />
}</p>
<p>upstream   blog.s135.com  {<br />
server   192.168.1.7:8080;<br />
server   192.168.1.7:8081;<br />
server    192.168.1.7:8082;<br />
}</p>
<p>server<br />
{<br />
listen  80;<br />
server_name  <a href="http://www.s135.com/;" target="_blank">www.s135.com;</a></p>
<p>location / {<br />
proxy_pass        <a href="http://www.s135.com/;" target="_blank">http://www.s135.com;</a><br />
proxy_set_header   Host             $host;<br />
proxy_set_header   X-Real-IP        $remote_addr;<br />
proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;<br />
}</p>
<p>log_format  www_s135_com  &#8217;$remote_addr &#8211; $remote_user [$time_local]  $request &#8216;<br />
&#8216;&#8221;$status&#8221;  $body_bytes_sent &#8220;$http_referer&#8221; &#8216;<br />
&#8216;&#8221;$http_user_agent&#8221; &#8220;$http_x_forwarded_for&#8221;&#8216;;<br />
access_log  /data1/logs/www.log  www_s135_com;<br />
}</p>
<p>server<br />
{<br />
listen  80;<br />
server_name  blog.s135.com;</p>
<p>location / {<br />
proxy_pass        <a href="http://blog.s135.com/;" target="_blank">http://blog.s135.com;</a><br />
proxy_set_header   Host             $host;<br />
proxy_set_header   X-Real-IP        $remote_addr;<br />
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;<br />
}</p>
<p>log_format  blog_s135_com   &#8217;$remote_addr &#8211; $remote_user [$time_local] $request &#8216;<br />
&#8216;&#8221;$status&#8221; $body_bytes_sent &#8220;$http_referer&#8221; &#8216;<br />
&#8216;&#8221;$http_user_agent&#8221;  &#8220;$http_x_forwarded_for&#8221;&#8216;;<br />
access_log   /data1/logs/blog.log  blog_s135_com;<br />
}<br />
}</p></div>
</div>
<p>附：Nginx 的安装方法可参照《<a href="http://blog.s135.com/read.php/297.htm" target="_blank">Nginx 0.5.31 + PHP 5.2.4（FastCGI）搭建可承受3万以上并发连接数，胜过Apache  10倍的Web服务器</a>》文章的以下段落（仅做负载均衡，无需支持PHP的安装方法）：</p>
<p><span style="font-family: 楷体_GB2312;">二、安装PHP 5.2.4（FastCGI模式）<br />
4、创建www用户和 组，以及其使用的目录：</p>
<p>三、安装Nginx 0.5.31<br />
1、安装Nginx所需的pcre库：<br />
2、安装 Nginx<br />
3、创建Nginx日志目录<br />
5、启动Nginx</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/3210/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>百度、新浪、Mixi、Apache社区赞助的开源 key-value分布式存储系统[原创]</title>
		<link>http://blog.haohtml.com/index.php/archives/3170</link>
		<comments>http://blog.haohtml.com/index.php/archives/3170#comments</comments>
		<pubDate>Thu, 01 Apr 2010 14:22:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[服务器类]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=3170</guid>
		<description><![CDATA[[文章作者：张宴 本文版本：v1.0 最后修改：2009.01.21 转载请注明原文链接：http://blog.s135.com/post/394/] key-value分布式存储系统查询速度快、存放数据量大、支持高并发，非常适合通过主键进行查询，但不能进行复杂的条件查询。如果辅以Real- Time Search Engine（实时搜索引擎）进行复杂条件检索、全文检索，就可以替代并发性能较低的MySQL等关系型数据库，达到高并发、高性能，节省几十倍服务器数 量的目的。以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储，在上万并发连接下，轻松地完成高速查询。而MySQL，在几百个并发连接下，就基本上崩溃了。 虽然key-value分布式存储具有极高的性能，但是只能做类似于MySQL的SELECT * FROM table WHERE id = 123;简单主键查询。 “搜索索引引擎＋key-value分布式存储”能够实现高并发的复杂条件查询、全文检索与数据显示。但是， 由于索引更新需要时间，目前还不能实现完全意义上的Real-Time Search（实时搜索），只能称之为Near Real-Time Search（准实时搜索）。“搜索索引引擎＋key-value分布式存储”除了做全文检索外，还可以在允许的索引延迟范围内，取代MySQL进行复杂 条件查询。 我的文章《亿级数据的高并发通用搜索引擎架构设计》的程序编码已经完成，第一轮测试昨天已经结束，能够在高并发情况下实现 1分钟内索引更新，属于“Near Real-Time Search Engine（准实时搜索引擎）＋key-value分布式存储”应用。其中，索引引擎采用Sphinx，存储采用key-value分布式数据库Tokyo Tyrant。 以下是常见的key-value分布式存储系统： 其中，以下几款值得关注： 1、Hypertable：它是搜索引擎公司Zvents根据Google的9位研究人员在2006年发表的一篇论 文《Bigtable： 结构化数据的分布存储系统》开发的一款开源分布式数据储存系统。Hypertable是按照1000节点比例设计，以 C++撰写，可架在 HDFS 和 KFS 上。尽管还在初期阶段，但已有不错的效能：写入 28M 列的资料，各节点写入速率可达7MB/s，读取速率可达 1M cells/s。Hypertable目前一直没有太多高负载和大存储的应用实例，但是最近，Hypertable项目得到了百度的赞助支持，相信其会有更好的发展。 2、Tokyo Tyrant：它是日本最大的SNS社交网站mixi.jp开发的 Tokyo Cabinet key-value数据库网络接口。它拥有Memcached兼容协议，也可以通过HTTP协议进行数据交换。对任何原有Memcached客户端来讲， 可以将Tokyo Tyrant看成是一个Memcached，但是，它的数据是可以持久存储的。Tokyo Tyrant 具有故障转移、日志文件体积小、大数据量下表现出色等优势，详见：http://blog.s135.com/post/362.htm Tokyo Cabinet [...]]]></description>
			<content:encoded><![CDATA[<p>[文章作者：张宴 本文版本：v1.0 最后修改：2009.01.21 转载请注明原文链接：<a href="http://blog.s135.com/post/394/" target="_blank">http://blog.s135.com/post/394/</a>]</p>
<p>key-value分布式存储系统查询速度快、存放数据量大、支持高并发，非常适合通过主键进行查询，但不能进行复杂的条件查询。如果辅以Real- Time Search  Engine（实时搜索引擎）进行复杂条件检索、全文检索，就可以替代并发性能较低的MySQL等关系型数据库，达到高并发、高性能，节省几十倍服务器数 量的目的。以MemcacheDB、Tokyo  Tyrant为代表的key-value分布式存储，在上万并发连接下，轻松地完成高速查询。而MySQL，在几百个并发连接下，就基本上崩溃了。<span id="more-3170"></span></p>
<p>虽然key-value分布式存储具有极高的性能，但是只能做类似于MySQL的SELECT * FROM table WHERE id =  123;简单主键查询。</p>
<p>“搜索索引引擎＋key-value分布式存储”能够实现高并发的复杂条件查询、全文检索与数据显示。但是， 由于索引更新需要时间，目前还不能实现完全意义上的Real-Time Search（实时搜索），只能称之为Near Real-Time  Search（准实时搜索）。“搜索索引引擎＋key-value分布式存储”除了做全文检索外，还可以在允许的索引延迟范围内，取代MySQL进行复杂 条件查询。</p>
<p>我的文章《<a href="http://blog.s135.com/post/385.htm" target="_blank">亿级数据的高并发通用搜索引擎架构设计</a>》的程序编码已经完成，第一轮测试昨天已经结束，能够在高并发情况下实现 1分钟内索引更新，属于“Near Real-Time Search  Engine（准实时搜索引擎）＋key-value分布式存储”应用。其中，索引引擎采用Sphinx，存储采用key-value分布式数据库<a href="http://tokyocabinet.sourceforge.net/index.html" target="_blank">Tokyo  Tyrant</a>。</p>
<p>以下是常见的key-value分布式存储系统：</p>
<p>其中，以下几款值得关注：</p>
<p>1、<a href="http://hypertable.org/" target="_blank">Hypertable</a>：它是搜索引擎公司Zvents根据Google的9位研究人员在2006年发表的一篇论 文《<a href="http://labs.google.com/papers/bigtable.html" target="_blank">Bigtable： 结构化数据的分布存储系统</a>》开发的一款开源分布式数据储存系统。Hypertable是按照1000节点比例设计，以 C++撰写，可架在  HDFS 和 KFS 上。尽管还在初期阶段，但已有不错的效能：写入 28M 列的资料，各节点写入速率可达7MB/s，读取速率可达 1M  cells/s。Hypertable目前一直没有太多高负载和大存储的应用实例，但是最近，Hypertable项目得到了<a href="http://www.baidu.com/" target="_blank">百度</a>的赞助支持，相信其会有更好的发展。</p>
<p><a href="../wp-content/uploads/2010/04/hypertable_baidu.gif"></a><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/hypertable_baidu.gif"></a><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/hypertable_baidu.gif"><img class="aligncenter size-full wp-image-3172" title="hypertable_baidu" src="http://blog.haohtml.com/wp-content/uploads/2010/04/hypertable_baidu.gif" alt="hypertable_baidu" width="410" height="80" /></a></p>
<hr /><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/hypertable_baidu.gif"><br />
</a> 2、<a href="http://tokyocabinet.sourceforge.net/index.html" target="_blank">Tokyo Tyrant</a>：它是日本最大的SNS社交网站<a href="http://mixi.jp/" target="_blank">mixi.jp</a>开发的 Tokyo Cabinet  key-value数据库网络接口。它拥有Memcached兼容协议，也可以通过HTTP协议进行数据交换。对任何原有Memcached客户端来讲， 可以将Tokyo Tyrant看成是一个Memcached，但是，它的数据是可以持久存储的。Tokyo Tyrant  具有故障转移、日志文件体积小、大数据量下表现出色等优势，详见：<a href="http://blog.s135.com/post/362.htm" target="_blank">http://blog.s135.com/post/362.htm</a></p>
<p>Tokyo Cabinet 2009年1月18日发布的新版本（Version 1.4.0）已经实现 Table  Database，将key-value数据库又扩展了一步，有了MySQL等关系型数据库的表和字段的概念，相信不久的将来，Tokyo Tyrant  也将支持这一功能。值得期待。</p>
<p><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/hypertable_baidu.gif"></a><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/tabledatabasecmp.png"><img class="aligncenter size-full wp-image-3175" title="tabledatabasecmp" src="http://blog.haohtml.com/wp-content/uploads/2010/04/tabledatabasecmp.png" alt="tabledatabasecmp" width="470" height="239" /></a></p>
<p><a name="entrymore"></a></p>
<hr />3、<a href="http://couchdb.apache.org/" target="_blank">CouchDB</a>：它是Apache社区 基于 Erlang/OTP 构建的高性能、分布式容错非关系型数据库系统（NRDBMS）。它充分利用 Erlang  本身所提供的高并发、分布式容错基础平台，并且参考 Lotus Notes  数据库实现，采用简单的文档数据类型（document-oriented）。在其内部，文档数据均以 JSON 格式存储。对外，则通过基于 HTTP  的 REST 协议实现接口，可以用十几种语言进行自由操作。<br />
<a href="http://blog.haohtml.com/wp-content/uploads/2010/04/sketch.png"><img class="aligncenter size-full wp-image-3176" title="sketch" src="http://blog.haohtml.com/wp-content/uploads/2010/04/sketch.png" alt="sketch" width="292" height="340" /></a></p>
<hr />4、<a href="http://memcachedb.org/" target="_blank">MemcacheDB</a>：它是新浪互 动社区事业部为在Memcached基础上，增加Berkeley  DB存储层而开发一款支持高并发的分布式持久存储系统，对任何原有Memcached客户端来讲，它仍旧是个Memcached，但是，它的数据是可以持 久存储的。</p>
<p><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/memcachedb.jpg"><img class="aligncenter size-full wp-image-3178" title="memcachedb" src="http://blog.haohtml.com/wp-content/uploads/2010/04/memcachedb.jpg" alt="memcachedb" width="500" height="356" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/3170/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Nginx的proxy_cache缓存功能取代Squid[原创]</title>
		<link>http://blog.haohtml.com/index.php/archives/3165</link>
		<comments>http://blog.haohtml.com/index.php/archives/3165#comments</comments>
		<pubDate>Thu, 01 Apr 2010 14:16:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[服务器类]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=3165</guid>
		<description><![CDATA[[文章作者：张宴 本文版本：v1.2 最后修改：2009.01.12 转载请注明原文链接：http://blog.s135.com/nginx_cache/] Nginx从0.7.48版本开始，支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key，用md5编码哈希后保存在硬盘上，所以 它可以支持任意URL链接，同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间，不支持类似Squid的PURGE指令，手动清除指定缓存页面，但是，通过一个第三方的Nginx 模块，可以清除指定URL的缓存。 Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache 相关指令集构成，前者用于反向代理时，对后端内容源服务器进行缓存，后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。 最新的Nginx 0.8.32版本，proxy_cache和fastcgi_cache已经比较完善，加上第三方的ngx_cache_purge模块（用于清除指定 URL的缓存），已经可以完全取代Squid。我们已经在生产环境使用了 Nginx 的 proxy_cache 缓存功能超过两个月，十分稳定，速度不逊于 Squid。 在功能上，Nginx已经具备Squid所拥有的Web缓存加速功能、清除 指定URL缓存的功能。而在性能上，Nginx对多核CPU的利用，胜过Squid不少。另外，在反向代理、负载均衡、健康检查、后端服务器故障转移、 Rewrite重写、易用性上，Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。 1、Nginx 负载均衡与缓存服务器在 Linux 下的编译安装： ulimit -SHn 65535 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz tar zxvf pcre-8.00.tar.gz cd pcre-8.00/ ./configure make &#38;&#38; make install cd ../ wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz tar zxvf ngx_cache_purge-1.0.tar.gz wget http://nginx.org/download/nginx-0.8.32.tar.gz tar zxvf nginx-0.8.32.tar.gz cd nginx-0.8.32/ ./configure [...]]]></description>
			<content:encoded><![CDATA[<p>[文章作者：张宴 本文版本：v1.2 最后修改：2009.01.12 转载请注明原文链接：<a href="http://blog.s135.com/nginx_cache/" target="_blank">http://blog.s135.com/nginx_cache/</a>]</p>
<p>Nginx从0.7.48版本开始，支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key，用md5编码哈希后保存在硬盘上，所以 它可以支持任意URL链接，同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx  Web缓存服务只能为指定URL或状态码设置过期时间，不支持类似Squid的PURGE指令，手动清除指定缓存页面，但是，通过一个第三方的Nginx 模块，可以清除指定URL的缓存。</p>
<p>Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache 相关指令集构成，前者用于反向代理时，对后端内容源服务器进行缓存，后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。<span id="more-3165"></span></p>
<p>最新的Nginx  0.8.32版本，proxy_cache和fastcgi_cache已经比较完善，加上第三方的ngx_cache_purge模块（用于清除指定 URL的缓存），已经可以完全取代Squid。我们已经在生产环境使用了 Nginx 的 proxy_cache  缓存功能超过两个月，十分稳定，速度不逊于 Squid。</p>
<p>在功能上，Nginx已经具备Squid所拥有的Web缓存加速功能、清除 指定URL缓存的功能。而在性能上，Nginx对多核CPU的利用，胜过Squid不少。另外，在反向代理、负载均衡、健康检查、后端服务器故障转移、 Rewrite重写、易用性上，Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。</p>
<hr />1、Nginx 负载均衡与缓存服务器在 Linux 下的编译安装：</p>
<div style="margin: 5px 5px 0px; padding: 3px; border: 1px dashed #00a0c6; background-color: #ffffff;">ulimit -SHn 65535<br />
wget <a href="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz" target="_blank">ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz</a><br />
tar  zxvf pcre-8.00.tar.gz<br />
cd pcre-8.00/<br />
./configure<br />
make  &amp;&amp; make install<br />
cd ../</p>
<p>wget <a href="http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz" target="_blank">http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz</a><br />
tar  zxvf ngx_cache_purge-1.0.tar.gz</p>
<p>wget <a href="http://nginx.org/download/nginx-0.8.32.tar.gz" target="_blank">http://nginx.org/download/nginx-0.8.32.tar.gz</a><br />
tar  zxvf nginx-0.8.32.tar.gz<br />
cd nginx-0.8.32/<br />
./configure &#8211;user=www  &#8211;group=www &#8211;add-module=../ngx_cache_purge-1.0  &#8211;prefix=/usr/local/webserver/nginx &#8211;with-http_stub_status_module  &#8211;with-http_ssl_module<br />
make &amp;&amp; make install<br />
cd ../</div>
<hr />2、/usr/local/webserver/nginx/conf/nginx.conf 配置文件内容如下：</p>
<div>user  www www;</p>
<p>worker_processes 8;</p>
<p>error_log  /usr/local/webserver/nginx/logs/nginx_error.log  crit;</p>
<p>pid        /usr/local/webserver/nginx/nginx.pid;</p>
<p>#Specifies  the value for maximum file descriptors that can be opened by this  process.<br />
worker_rlimit_nofile 65535;</p>
<p>events<br />
{<br />
use  epoll;<br />
worker_connections 65535;<br />
}</p>
<p>http<br />
{<br />
include        mime.types;<br />
default_type  application/octet-stream;</p>
<p>charset  utf-8;</p>
<p>server_names_hash_bucket_size  128;<br />
client_header_buffer_size 32k;<br />
large_client_header_buffers  4 32k;<br />
client_max_body_size 300m;</p>
<p>sendfile on;<br />
tcp_nopush      on;</p>
<p>keepalive_timeout 60;</p>
<p>tcp_nodelay on;</p>
<p>client_body_buffer_size  512k;<br />
proxy_connect_timeout    5;<br />
proxy_read_timeout        60;<br />
proxy_send_timeout       5;<br />
proxy_buffer_size        16k;<br />
proxy_buffers            4  64k;<br />
proxy_busy_buffers_size 128k;<br />
proxy_temp_file_write_size  128k;</p>
<p>gzip on;<br />
gzip_min_length  1k;<br />
gzip_buffers      4 16k;<br />
gzip_http_version 1.1;<br />
gzip_comp_level 2;<br />
gzip_types        text/plain application/x-javascript text/css application/xml;<br />
gzip_vary  on;</p>
<p>#注：proxy_temp_path和proxy_cache_path指定的路径必须在同一分区<br />
proxy_temp_path    /data0/proxy_temp_dir;<br />
#设置Web缓存区名称为cache_one，内存缓存空间大小为200MB，1天没有被访 问的内容自动清除，硬盘缓存空间大小为30GB。<br />
proxy_cache_path  /data0/proxy_cache_dir  levels=1:2    keys_zone=cache_one:200m inactive=1d max_size=30g;</p>
<p>upstream  backend_server {<br />
server   192.168.8.43:80 weight=1 max_fails=2  fail_timeout=30s;<br />
server   192.168.8.44:80 weight=1 max_fails=2  fail_timeout=30s;<br />
server   192.168.8.45:80 weight=1 max_fails=2  fail_timeout=30s;<br />
}</p>
<p>server<br />
{<br />
listen       80;<br />
server_name  www.yourdomain.com  192.168.8.42;<br />
index index.html index.htm;<br />
root  /data0/htdocs/www;</p>
<p>location  /<br />
{<br />
#如果后端的服务器返回502、504、执行超时等错误，自动将请求转发到upstream负载均衡池中的另一台服务器，实现故障转移。<br />
proxy_next_upstream http_502 http_504 error timeout invalid_header;<br />
proxy_cache cache_one;<br />
#对不同的HTTP状态码设置不同的缓存时间<br />
proxy_cache_valid  200 304 12h;<br />
#以域名、URI、参数组合成Web缓存的Key值，Nginx根据Key值哈希，存储缓存内容到二级缓存目录内<br />
proxy_cache_key $host$uri$is_args$args;<br />
proxy_set_header  Host  $host;<br />
proxy_set_header X-Forwarded-For  $remote_addr;<br />
proxy_pass http://backend_server;<br />
expires      1d;<br />
}</p>
<p># 用于清除缓存，假设一个URL为http://192.168.8.42/test.txt，通过访问http://192.168.8.42 /purge/test.txt就可以清除该URL的缓存。<br />
location ~ /purge(/.*)<br />
{<br />
#设置只允许指定的IP或IP段才可以清除URL缓存。<br />
allow            127.0.0.1;<br />
allow            192.168.0.0/16;<br />
deny            all;<br />
proxy_cache_purge    cache_one   $host$1$is_args$args;<br />
}</p>
<p># 扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。<br />
location ~ .*\.(php|jsp|cgi)?$<br />
{<br />
proxy_set_header Host  $host;<br />
proxy_set_header  X-Forwarded-For  $remote_addr;<br />
proxy_pass  http://backend_server;<br />
}</p>
<p>access_log  off;<br />
}<br />
}</p></div>
<hr />3、启动 Nginx：</p>
<div style="margin: 5px 5px 0px; padding: 3px; border: 1px dashed #00a0c6; background-color: #ffffff;">/usr/local/webserver/nginx/sbin/nginx</div>
<hr />4、清除指定的URL缓存示例：</p>
<p><a href="http://blog.haohtml.com/wp-content/uploads/2010/04/nginx_purge.png"><img class="aligncenter size-full wp-image-3168" title="nginx_purge" src="http://blog.haohtml.com/wp-content/uploads/2010/04/nginx_purge.png" alt="nginx_purge" width="745" height="309" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/3165/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>重启nginx服务的简单命令</title>
		<link>http://blog.haohtml.com/index.php/archives/2690</link>
		<comments>http://blog.haohtml.com/index.php/archives/2690#comments</comments>
		<pubDate>Thu, 10 Dec 2009 01:57:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[服务器类]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/index.php/archives/2690</guid>
		<description><![CDATA[用root权限 #killall nginx #nginx 其它相关命令： 1.显示nginx进行id #ps -aux &#124; grep nginx 2.结果nginx的master进行pid #kill -HUP 635 3.重启ngnix #nginx]]></description>
			<content:encoded><![CDATA[<p>用root权限</p>
<p>#killall nginx</p>
<p>#nginx</p>
<p><span style="color: #0000ff;">其它相关命令：</span></p>
<p>1.显示nginx进行id<br />
<strong>#ps -aux | grep nginx</strong></p>
<p>2.结果nginx的master进行pid<br />
<strong>#kill -HUP 635</strong></p>
<p>3.重启ngnix<br />
<strong>#nginx</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/index.php/archives/2690/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
