<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿权的书房]]></title> 
<link>http://www.aslibra.com/blog/index.php</link> 
<description><![CDATA[技术经验分享，资料收集，偶尔晾几张相片，感言生活]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿权的书房]]></copyright>
<item>
<link>http://www.aslibra.com/blog/post/centos_yum_mirrors_by_nginx.php</link>
<title><![CDATA[配置centos更新源的缓存服务器]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Mon, 05 Apr 2010 09:12:29 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/centos_yum_mirrors_by_nginx.php</guid> 
<description>
<![CDATA[ 
	参考《<a href="http://www.linuxsir.org/bbs/thread343985.html" target="_blank">使用163开源镜像升级你的Centos </a>》<br/><br/>如果设置源服务器为163的，你有很多服务器需要处理，那建立一个本地缓存服务器是一个很好的选择，更新一次后，那之后的更新速度可就快的要命啊。。<br/><br/>配置nginx为类似如下样子，自行修改自己的需求：<br/><br/><div class="code">upstream backend &#123;<br/>&nbsp;&nbsp;server mirrors.163.com:80 ;<br/>&#125;<br/><br/>server &#123;<br/>&nbsp;&nbsp;#server_name&nbsp;&nbsp;www.aslibra.com;<br/>&nbsp;&nbsp;server_name&nbsp;&nbsp;mirrors.aslibra.com;<br/>&nbsp;&nbsp;set $index &#039;index.htm&#039;;<br/>&nbsp;&nbsp;set $store_file $request_filename;<br/>&nbsp;&nbsp;#root&nbsp;&nbsp;&nbsp;&nbsp;/Data/www.aslibra.com;<br/>&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;/Data/mirrors/mirrors.163.com;<br/>&nbsp;&nbsp;if ($uri ~ /$ )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;set $store_file $request_filename$index;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;location /centos/ &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;index index.htm;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_store on;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_temp_path /Data/mirrors/tmp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header Host mirrors.163.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_store_access user:rw group:rw all:rw;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ( !-e $store_file ) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass http://backend;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><br/>yum的配置可以如下：<br/><br/><div class="code">&#91;base&#93;<br/>name=CentOS-$releasever - Base<br/>baseurl=http://mirrors.aslibra.com/centos/$releasever/os/$basearch/<br/>gpgcheck=1<br/>gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br/><br/>&#91;updates&#93;<br/>name=CentOS-$releasever - Updates<br/>baseurl=http://mirrors.aslibra.com/centos/$releasever/updates/$basearch/<br/>gpgcheck=1<br/>gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br/><br/>&#91;addons&#93;<br/>name=CentOS-$releasever - Addons<br/>baseurl=http://mirrors.aslibra.com/centos/$releasever/addons/$basearch/<br/>gpgcheck=1<br/>gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br/><br/>&#91;extras&#93;<br/>name=CentOS-$releasever - Extras<br/>baseurl=http://mirrors.aslibra.com/centos/$releasever/extras/$basearch/<br/>gpgcheck=1<br/>gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br/><br/>&#91;centosplus&#93;<br/>name=CentOS-$releasever - Plus<br/>baseurl=http://mirrors.aslibra.com/centos/$releasever/centosplus/$basearch/<br/>gpgcheck=1<br/>enabled=0<br/>gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</div><br/><br/>就这样OK了！<br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/linux/" rel="tag">linux</a> , <a href="http://www.aslibra.com/blog/go.php/tags/centos/" rel="tag">centos</a> , <a href="http://www.aslibra.com/blog/go.php/tags/yum/" rel="tag">yum</a> , <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/nginx_pcre_md5.php</link>
<title><![CDATA[yum安装nginx需要的类库]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Tue, 16 Mar 2010 12:40:23 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/nginx_pcre_md5.php</guid> 
<description>
<![CDATA[ 
	以下几个是解决安装过程碰到的pcre和md5的问题<br/><br/><div class="code">yum -y install pcre-devel openssl openssl-devel</div><br/><br/>其中pcre-devel是解决pcre的，剩余两个解决md5的，很简便。<br/><br/>参考阅读：<a href="http://hi.baidu.com/jcy168/blog/item/f4ef92b73104c0ff30add144.html" target="_blank">the HTTP rewrite module requires the PCRE library</a><br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/yum/" rel="tag">yum</a> , <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/error_404_reading.php</link>
<title><![CDATA[注意404错误]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Mon, 08 Feb 2010 11:59:08 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/error_404_reading.php</guid> 
<description>
<![CDATA[ 
	曾经几次发生404的问题导致服务器请求很慢，这个问题一直都还没有明确原因。<br/>为什么404错误会导致连接数特别高？<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">Active connections: 1118 <br/>server accepts handled requests<br/> 48870809 48870809 48557219 <br/>Reading: 1116 Writing: 2 Waiting: 0 <br/><br/>Active connections: 17 <br/>server accepts handled requests<br/> 50852281 50852281 50537511 <br/>Reading: 16 Writing: 1 Waiting: 0 </div></div><br/><br/>上面是nginx在404错误时，和修复404错误之后的变化，404错误居然能够产生有1k多的连接。<br/>更换为lighttpd也是一样，顶不住。。<br/>reading的数量特别高，导致访问其它服务特别慢。汗一把。。有空再细看资料，大家平时多注意。。。<br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/regex_express_not_a_word.php</link>
<title><![CDATA[记一正则，匹配非某单词]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Fri, 21 Aug 2009 14:25:47 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/regex_express_not_a_word.php</guid> 
<description>
<![CDATA[ 
	由于要rewrite一个地址从<br/>/mag/xx/xxx/ -> /m/xxx<br/>但原先 /mag/xx/more/ 要保留<br/>这就得写一个比较奇特的正则了，尝试了比较多的写法也没成功<br/><br/>最先想的是：<br/><br/><div class="code">location ~* ^/mag/&#91;^/&#93;+/&#91;^(more)&#93;+/ &#123;<br/>&nbsp;&nbsp;rewrite ^/mag/&#91;^/&#93;+/(.*) /m/$1 permanent;<br/>&#125;</div><br/><br/>[]的写法并不凑效，里面是匹配单个字符的，这样无效，匹配不了<br/><br/>还是小范同学不错，研究的深入，提供了非某单词的写法 (?!more)<br/><br/><div class="code">location ~* ^/mag/&#91;^/&#93;+/(?!more)(&#91;^/&#93;+)/ &#123;<br/>&nbsp;&nbsp;rewrite ^/mag/&#91;^/&#93;+/(.*) /m/$1 permanent;<br/>&#125;</div><br/><br/>这个写法勉强可以应付了，后面的匹配单元虽说还不完美，但也能够对付我的所有需求内容了。<br/>有需要的可以参考此写法。<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>常用分组语法<br/><br/><strong>捕获</strong> <br/>(exp) 匹配exp,并捕获文本到自动命名的组里 <br/>(?<name>exp) 匹配exp,并捕获文本到名称为name的组里，也可以写成(?'name'exp) <br/>(?:exp) 匹配exp,不捕获匹配的文本，也不给此分组分配组号 <br/><br/><strong>零宽断言 </strong><br/>(?=exp) 匹配exp前面的位置 <br/>(?<=exp) 匹配exp后面的位置 <br/>(?!exp) 匹配后面跟的不是exp的位置 <br/>(?<!exp) 匹配前面不是exp的位置<br/></div></div><br/><br/>参考资料：<a href="http://www.google.cn/search?hl=zh-CN&newwindow=1&q=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F&aq=f&oq=" target="_blank">正则表达式</a><br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/nginx_proxy_redirect.php</link>
<title><![CDATA[Nginx的proxy_redirect作用]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Tue, 21 Jul 2009 15:47:48 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/nginx_proxy_redirect.php</guid> 
<description>
<![CDATA[ 
	Nginx的代理功能太完善了，我们看看proxy_redirect参数的作用。<br/><br/>案例说明：<br/>要做一个html.aslibra.com的域名处理很多网站的html内容，当然是后端的服务器了，目录分析<br/>html.zcom.com/img.aslibra.com/<br/>html.zcom.com/css.aslibra.com/<br/>访问的域名是该目录下的域名，那前端nginx的配置应该类似这样：<br/><br/><div class="code">server &#123;<br/>&nbsp;&nbsp;server_name img.aslibra.com;<br/>&nbsp;&nbsp;location / &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^(.*) /$http_host$1 break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header Host html.aslibra.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass http://cache-89;<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><br/>但这样访问目录时如果没有以“/”结尾，则服务器会返回301redirect：<br/><br/><div class="code">&#91;root@aslibra ~&#93;# curl -I http://img.aslibra.com/www<br/>HTTP/1.1 301 Moved Permanently<br/>Server: nginx/0.7.59<br/>Date: Tue, 21 Jul 2009 15:28:58 GMT<br/>Connection: keep-alive<br/>Location: http://html.aslibra.com/img.aslibra.com/www/</div><br/><br/>html.aslibra.com这个域名并非公布的域名，返回给客户端是会自然产生错误的<br/>Nginx可以很好的处理这个问题：<br/><br/><div class="code">server &#123;<br/>&nbsp;&nbsp;server_name img.aslibra.com;<br/>&nbsp;&nbsp;location / &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^(.*) /$http_host$1 break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header Host html.aslibra.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass http://cache-89;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_redirect&nbsp;&nbsp; http://html.aslibra.com/img.aslibra.com/&nbsp;&nbsp;&nbsp;&nbsp;/;<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><br/>加一行proxy_redirect后，正常了：<br/><br/><div class="code">&#91;root@aslibra ~&#93;# curl -I http://img.aslibra.com/www<br/>HTTP/1.1 301 Moved Permanently<br/>Server: nginx/0.7.59<br/>Date: Tue, 21 Jul 2009 15:23:49 GMT<br/>Content-Type: text/html<br/>Location: http://img.aslibra.com/www/<br/>Connection: keep-alive<br/>Content-Length: 185<br/>Expires: Tue, 21 Jul 2009 16:23:49 GMT<br/>Cache-Control: max-age=3600</div><br/><br/>就这么样就ok啦~<br/>不过貌似不支持变量出现在地址里，这个就郁闷了，必须指定相应域名。<br/>对于多个域名匹配的server，redirect设置不能写作'/'了，否则会用第一个域名作为redirect域名<br/>可以写几个匹配规则：<br/><br/><div class="code">proxy_redirect&nbsp;&nbsp; http://html.aslibra.com/img.aslibra.com/&nbsp;&nbsp;&nbsp;&nbsp;http://img.aslibra.com/;<br/>proxy_redirect&nbsp;&nbsp; http://html.aslibra.com/css.aslibra.com/&nbsp;&nbsp;&nbsp;&nbsp;http://css.aslibra.com/;</div><br/><br/><br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/proxy/" rel="tag">proxy</a> , <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a> , <a href="http://www.aslibra.com/blog/go.php/tags/redirect/" rel="tag">redirect</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/nginx_host_proxy_store.php</link>
<title><![CDATA[Nginx做文件镜像和多域名同内容处理]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Wed, 17 Jun 2009 16:46:30 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/nginx_host_proxy_store.php</guid> 
<description>
<![CDATA[ 
	Nginx的代理功能很强大，主要体现在可以设置返给后端服务器的http头信息，这一点可以让我们方便的实现很多需求。<br/><br/>比如要做一个镜像，这个当然有可能是好事。<br/>http://a.aslibra.com/s/main.jpg<br/>我需要访问 http://b.aslibra.com/s/main.jpg 也是一样的内容呢？<br/><br/><div class="code">server &#123;<br/>&nbsp;&nbsp;server_name&nbsp;&nbsp;b.aslibra.com;<br/>&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;/Data/webapps/b.aslibra.com;<br/>&nbsp;&nbsp;error_page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 404 = @fetch;<br/>&nbsp;&nbsp;location @fetch &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;internal;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_store&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_store_access&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user:rw&nbsp;&nbsp;group:rw&nbsp;&nbsp;all:r;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header Host a.aslibra.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header referer http://a.aslibra.com/;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass&nbsp;&nbsp; http://backend;<br/>&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;/Data/webapps/b.aslibra.com;<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><br/>利用缓存功能就可以了，以上例子还加上了简单破解防盗链的方法，就是加上正确的referer的头信息就可以了<br/>upstream自己可以设定，修改了host的信息，使得相当于本地访问backend使用了要做镜像的域名。<br/><br/>同理，要多个域名是一样的内容是，那可以多个域名使用同样的server设定，简单的指定host值即可，不列举了。<br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a> , <a href="http://www.aslibra.com/blog/go.php/tags/proxy/" rel="tag">proxy</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/nginx_upgrade_note.php</link>
<title><![CDATA[Nginx升级笔记]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Wed, 10 Jun 2009 15:39:58 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/nginx_upgrade_note.php</guid> 
<description>
<![CDATA[ 
	升级一下Nginx，笔记一下：<br/><br/><div class="code">wget http://sysoev.ru/nginx/nginx-0.7.59.tar.gz<br/>tar xfz nginx-0.7.59.tar.gz<br/>cd nginx-0.7.59<br/>./configure&nbsp;&nbsp;--prefix=/Data/apps/nginx &#92;<br/>--with-http_ssl_module &#92;<br/>--with-http_stub_status_module &#92;<br/>--without-mail_pop3_module &#92;<br/>--without-mail_imap_module &#92;<br/>--without-mail_smtp_module &#92;<br/>&amp;&amp; make &amp;&amp; make install<br/><br/>#平滑升级可执行程序，使用新的 nginx 可执行程序替换旧的 <br/>kill -USR2 `cat /Data/apps/nginx/logs/nginx.pid`<br/>#你可以让旧进程停止工作<br/>kill -QUIT `cat /Data/apps/nginx/logs/nginx.pid.oldbin`<br/>#如果不需要完全停止旧进程，还希望恢复的，你必须发送 WINCH 信号给旧的主进程，然后，它的工作进程就将开始从容关闭<br/>kill -WINCH `cat /Data/apps/nginx/logs/nginx.pid.oldbin`</div><br/><br/>升级后的信息：<br/><br/><div class="code">&#91;root@localhost nginx&#93;# curl -I http://localhost<br/>HTTP/1.1 403 Forbidden<br/>Server: nginx/0.7.59<br/>Date: Wed, 10 Jun 2009 15:04:14 GMT<br/>Content-Type: text/html<br/>Content-Length: 169</div><br/><br/>参考资料：<br/><a href="http://wiki.nginx.org/NginxChsCommandLine" target="_blank">Nginx中文文档 > 运行和控制 Nginx - 命令行参数和信号</a><br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/nginx_command_reload.php</link>
<title><![CDATA[Nginx0.7.53新的重载方式]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Tue, 09 Jun 2009 15:55:33 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/nginx_command_reload.php</guid> 
<description>
<![CDATA[ 
	新安装了0.7.59，发现了有新的东西：<br/><br/><div class="code">&#91;root@aslibra ~&#93;# /Data/apps/nginx/sbin/nginx -h<br/>nginx version: nginx/0.7.59<br/>Usage: nginx &#91;-?hvVt&#93; &#91;-s signal&#93; &#91;-c filename&#93; &#91;-p prefix&#93; &#91;-g directives&#93;<br/><br/>Options:<br/>&nbsp;&nbsp;-?,-h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : this help<br/>&nbsp;&nbsp;-v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: show version and exit<br/>&nbsp;&nbsp;-V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: show version and configure options then exit<br/>&nbsp;&nbsp;-t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: test configuration and exit<br/>&nbsp;&nbsp;-s signal&nbsp;&nbsp;&nbsp;&nbsp; : send signal to a master process: stop, quit, reopen, reload<br/>&nbsp;&nbsp;-p prefix&nbsp;&nbsp;&nbsp;&nbsp; : set prefix path (default: /Data/apps/nginx/)<br/>&nbsp;&nbsp;-c filename&nbsp;&nbsp; : set configuration file (default: conf/nginx.conf)<br/>&nbsp;&nbsp;-g directives : set global directives out of configuration file</div><br/><br/>以前没有-h的参数，今天尝试发现了 &#92;(^o^)/~<br/><br/>重载配置可以使用 -s reload 多方便呀~<br/>以前还得 kill -HUP `cat logs/nginx.pid` 麻烦东西<br/><br/><a href="http://nginx.net/CHANGES-0.7" target="_blank">参考changelog</a>：<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">Changes with nginx 0.7.53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27 Apr 2009<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;*) Change: now a log set by --error-log-path is created from the very <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start-up.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;*) Feature: now the start up errors and warnings are outputted to an <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error_log and stderr.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;*) Feature: the empty --prefix= configure parameter forces nginx to use <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a directory where it was run as prefix.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;*) Feature: the -p switch.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;*) Feature: the -s switch on Unix platforms.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;*) Feature: the -? and -h switches.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thanks to Jerome Loyet.</div></div><br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/nginx_stub_status.php</link>
<title><![CDATA[[转]Nginx 监控]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Tue, 09 Jun 2009 01:30:39 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/nginx_stub_status.php</guid> 
<description>
<![CDATA[ 
	记录一下nginx的统计信息的意义<br/><br/><div class="code">location ~ ^/NginxStatus/ &#123; <br/>&nbsp;&nbsp;stub_status on; #Nginx 状态监控配置<br/>&nbsp;&nbsp;access_log off; <br/>&#125; </div><br/><br/>首先我们定义了一个 location ~ ^/NginxStatus/，这样通过 http://localhost/NginxStatus/ 就可以监控到 Nginx 的运行信息，显示的内容如下：<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">Active connections: 70 <br/>server accepts handled requests<br/> 14553819 14553819 19239266 <br/>Reading: 0 Writing: 3 Waiting: 67 </div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><strong>NginxStatus 显示的内容意思如下：</strong><br/><br/>active connections – 当前 Nginx 正处理的活动连接数。 <br/>server accepts handled requests -- 总共处理了 14553819 个连接 , 成功创建 14553819 次握手 ( 证明中间没有失败的 ), 总共处理了 19239266 个请求 ( 平均每次握手处理了 1.3 个数据请求 )。 <br/>reading -- nginx 读取到客户端的 Header 信息数。 <br/>writing -- nginx 返回给客户端的 Header 信息数。 <br/>waiting -- 开启 keep-alive 的情况下，这个值等于 active - (reading + writing)，意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。 <br/><br/>来自：<a href="http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/" target="_blank">使用 Nginx 提升网站访问速度</a><br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/read.php/1232.htm</link>
<title><![CDATA[Nginx的代理缓存+PHP清除缓存]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[Nginx]]></category>
<pubDate>Wed, 25 Mar 2009 15:02:32 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/read.php/1232.htm</guid> 
<description>
<![CDATA[ 
	Nginx有很强的代理功能，作为proxy很有优势，另外还可以把文件缓存到本地，实在是很不错的。<br/>但可惜的是，默认没有文件过期控制，文件作为长期镜像是很不错的。<br/><br/>Nginx代理不需要下载到服务器端再发送，有进程下载完整内容了估计就可以保存到本地了，需要清理的话，下面有介绍简单的方法。Nginx的文件发送性能就不用担心了，很稳定高效。<br/><br/>详情参考：<a href="http://wiki.nginx.org/NginxHttpProxyModule" target="_blank">NginxHttpProxyModule</a><br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">proxy_store <br/>syntax: proxy_store [on &#124; off &#124; path] <br/><br/>default: proxy_store off <br/><br/>context: http, server, location <br/><br/>This directive sets the path in which upstream files are stored. The parameter "on" preserves files in accordance with path specified in directives alias or root. The parameter "off" forbids storing. Furthermore, the name of the path can be clearly assigned with the aid of the line with the variables: <br/><br/>proxy_store&nbsp;&nbsp; /data/www$original_uri;<br/><br/>The time of modification for the file will be set to the date of "Last-Modified" header in the response. To be able to safe files in this directory it is necessary that the path is under the directory with temporary files, given by directive proxy_temp_path for the data location. </div></div><br/><br/>也就是说的是可以缓存文件了，怎么做呢？<br/>可以参考下面的代码片段：<br/><br/><div class="code">upstream aslibra &#123;<br/>&nbsp;&nbsp;server 123.45.67.89 ;<br/>&nbsp;&nbsp;server 123.45.67.8 backup;<br/>&#125;<br/><br/>proxy_store&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on;<br/>proxy_store_access&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user:rw&nbsp;&nbsp;group:rw&nbsp;&nbsp;all:r;<br/>proxy_temp_path /Data/webapps/proxy_tmp;<br/>proxy_redirect off;<br/><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/><br/>server &#123;<br/>&nbsp;&nbsp;expires&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 240h;<br/>&nbsp;&nbsp;server_name&nbsp;&nbsp;www.aslibra.com;<br/>&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;/Data/webapps/www.aslibra.com;<br/>&nbsp;&nbsp;location / &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;add_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X-Cache&nbsp;&nbsp; HIT;<br/>&nbsp;&nbsp;&nbsp;&nbsp;error_page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 404 = @fetch;<br/>&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;location @fetch &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;internal;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://aslibra;<br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_next_upstream http_500;<br/>&nbsp;&nbsp;&nbsp;&nbsp;add_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X-Cache&nbsp;&nbsp; MISS;<br/>&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Data/webapps/www.aslibra.com;<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><br/>另外，文件要更新怎么办？那其实有两种方式解决文件过期的情况：<br/>1 定时删除修改时间太旧的文件<br/>2 PURGE方式直接删除<br/><br/><strong>定时删除文件</strong><br/>下面是每2小时删除修改时间超过2天的文件<br/><br/><div class="code">#clear cache pic<br/>01 */2 * * * root find /Data/webapps/www.aslibra.com/ -type f -mtime +2 -print0 &#124; xargs -0 -r rm &gt;/dev/null 2&gt;&amp;1</div><br/><br/><strong>PURGE方式删除</strong><br/><br/>如果不是要求实时删除的话，可以有一种思路：<br/>PURGE请求的（或者其它标识）记录日志，然后每10分钟分析日志，删除日志里面的文件，这样效率应该也是不错的~我没有做这个，我还是希望兼容PURGE，那怎么办呢？<br/><br/>那就交给fastcgi处理好了（注意，Nginx不支持cgi），比如：<br/><br/><div class="code">location / &#123;<br/>&nbsp;&nbsp;if ($request_method ~ &quot;PURGE&quot;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;rewrite (.*) /purge.php last;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;add_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X-Cache&nbsp;&nbsp; HIT;<br/>&nbsp;&nbsp;error_page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 404 = @fetch;<br/>&#125;<br/>location /purge.php<br/>&#123;<br/>&nbsp;&nbsp;internal;<br/>&nbsp;&nbsp;fastcgi_pass&nbsp;&nbsp; 127.0.0.1:9000;<br/>&nbsp;&nbsp;include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_params;<br/>&nbsp;&nbsp;fastcgi_param&nbsp;&nbsp;SCRIPT_FILENAME&nbsp;&nbsp;&nbsp;&nbsp;/Data/www.aslibra.com/fastcgi$fastcgi_script_name;<br/>&#125;</div><br/><br/>这个就是把请求交给PHP了啦，PHP怎么写呢？<br/>下面有个简单的例子：<br/><br/><div class="code">&lt;?<br/>header(&#039;Cache-Control: max-age=0&#039;);<br/>$uri = $_SERVER&#91;&#039;REQUEST_URI&#039;&#93;;<br/>$doc_root = $_SERVER&#91;&#039;DOCUMENT_ROOT&#039;&#93;;<br/><br/>$file = $doc_root.$uri;<br/>echo $file.&quot;&#92;n&quot;;<br/>if(is_file($file))&#123;<br/>&nbsp;&nbsp;echo &quot;File Clear...&quot;;<br/>&nbsp;&nbsp;@unlink($file);<br/>&#125;else&#123;<br/>&nbsp;&nbsp;echo &quot;File Not Found...&quot;;<br/>&#125;<br/>?&gt;</div><br/><br/>以上方式就兼容squid的PURGE方式了，很方便的~<br/><br/><strong>另外说一下Ncache：</strong><br/><br/><a href="http://ncache.googlecode.com/" target="_blank">Ncache</a>也是不错的项目，是新浪的公司项目。<br/>测试过32位的版本，有不满意的地方：<br/>1 文件缓存有不完整的情况<br/>2 proxy_pass就触发此功能，不能使用proxy_store了，以上说的功能不兼容<br/>3 发现多次 kill -HUP 导致死掉服务<br/><br/>与开发的负责人闲聊一些，听闻64位现在是主要维护对象，文件不完整情况应该做了改善，有兴趣的朋友可以试试<br/>不过阿权没有64位的机器来测试了，我的都是32位的老机器啊，可怜~~<br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/linux/" rel="tag">linux</a> , <a href="http://www.aslibra.com/blog/go.php/tags/php/" rel="tag">php</a> , <a href="http://www.aslibra.com/blog/go.php/tags/nginx/" rel="tag">nginx</a> , <a href="http://www.aslibra.com/blog/go.php/tags/ncache/" rel="tag">ncache</a>
]]>
</description>
</item>
</channel>
</rss>