﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xylz,imxylz-随笔分类-nginx</title><link>http://www.blogjava.net/xylz/category/43786.html</link><description>关注后端架构、中间件、分布式和高性能RESTful服务</description><language>zh-cn</language><lastBuildDate>Wed, 11 Sep 2013 19:19:44 GMT</lastBuildDate><pubDate>Wed, 11 Sep 2013 19:19:44 GMT</pubDate><ttl>60</ttl><item><title>申请SSL证书及Nginx支持HTTPS</title><link>http://www.blogjava.net/xylz/archive/2013/09/11/403965.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Wed, 11 Sep 2013 13:58:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2013/09/11/403965.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/403965.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2013/09/11/403965.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/403965.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/403965.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文描述如何申请2.5$每年的SSL证书，并启用Nginx的HTTPS访问。&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2013/09/11/403965.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/403965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">imxylz</a> 2013-09-11 21:58 <a href="http://www.blogjava.net/xylz/archive/2013/09/11/403965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Nginx的proxyCache缓存功能</title><link>http://www.blogjava.net/xylz/archive/2010/01/29/311234.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Fri, 29 Jan 2010 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2010/01/29/311234.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/311234.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2010/01/29/311234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/311234.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/311234.html</trackback:ping><description><![CDATA[<span style="font-family: Arial, Helvetica, sans-serif; font-size: 15px; ">
<div id="wikititle">
<h1 class="pagetitle" style="margin-top: 0px; margin-bottom: 0px; font-weight: normal; font-size: 1.6em; line-height: 1em; margin-right: 0px; margin-left: 0px; ">使用Nginx的proxyCache缓存功能</h1>
</div>
<div id="wikitext" style="margin-top: 12px; line-height: 1.33em; ">
<p style="margin-top: 0px; margin-bottom: 0px; ">Nginx从0.7.48版本开始，支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key，用md5编码哈希后保存在硬盘上，所以它可以支持任意URL链接，同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间，不支持类似Squid的PURGE指令，手动清除指定缓存页面，但是，通过一个第三方的Nginx 模块，可以清除指定URL的缓存。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache 相关指令集构成，前者用于反向代理时，对后端内容源服务器进行缓存，后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">最新的Nginx 0.8.31版本，proxy_cache和fastcgi_cache已经比较完善，加上第三方的ngx_cache_purge模块（用于清除指定 URL的缓存），已经可以完全取代Squid。我们已经在生产环境使用了 Nginx 的 proxy_cache 缓存功能超过两个月，十分稳定，速度不逊于 Squid。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">在功能上，Nginx已经具备Squid所拥有的Web缓存加速功能、清除指定URL缓存的功能。而在性能上，Nginx对多核CPU的利用，胜过Squid不少。另外，在反向代理、负载均衡、健康检查、后端服务器故障转移、 Rewrite重写、易用性上，Nginx也比Squid强大得多。这使得一台Nginx可以同时作为&#8220;负载均衡服务器&#8221;与&#8220;Web缓存服务器&#8221;来使用。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">Nginx的基础依赖等这里就不再安装了，我们直接从Nginx开始。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">wget&nbsp;http</span><span style="color: #000000; ">://</span><span style="color: #000000; ">labs</span><span style="color: #000000; ">.</span><span style="color: #000000; ">frickle</span><span style="color: #000000; ">.</span><span style="color: #000000; ">com</span><span style="color: #000000; ">/</span><span style="color: #000000; ">files</span><span style="color: #000000; ">/</span><span style="color: #000000; ">ngx_cache_purge</span><span style="color: #000000; ">-</span><span style="color: #800000; ">1.0</span><span style="color: #000000; ">.</span><span style="color: #000000; ">tar</span><span style="color: #000000; ">.</span><span style="color: #000000; ">gz<br />
tar&nbsp;xvzf&nbsp;ngx_cache_purge</span><span style="color: #000000; ">-</span><span style="color: #800000; ">1.0</span><span style="color: #000000; ">.</span><span style="color: #000000; ">tar</span><span style="color: #000000; ">.</span><span style="color: #000000; ">gz<br />
wget&nbsp;http</span><span style="color: #000000; ">://</span><span style="color: #000000; ">nginx</span><span style="color: #000000; ">.</span><span style="color: #000000; ">org</span><span style="color: #000000; ">/</span><span style="color: #000000; ">download</span><span style="color: #000000; ">/</span><span style="color: #000000; ">nginx</span><span style="color: #000000; ">-</span><span style="color: #800000; ">0.8</span><span style="color: #000000; ">.</span><span style="color: #800000; ">31</span><span style="color: #000000; ">.</span><span style="color: #000000; ">tar</span><span style="color: #000000; ">.</span><span style="color: #000000; ">gz<br />
tar&nbsp;zxvf&nbsp;nginx</span><span style="color: #000000; ">-</span><span style="color: #800000; ">0.8</span><span style="color: #000000; ">.</span><span style="color: #800000; ">31</span><span style="color: #000000; ">.</span><span style="color: #000000; ">tar</span><span style="color: #000000; ">.</span><span style="color: #000000; ">gz<br />
&nbsp;cd&nbsp;nginx</span><span style="color: #000000; ">-</span><span style="color: #800000; ">0.8</span><span style="color: #000000; ">.</span><span style="color: #800000; ">31</span><span style="color: #000000; ">/</span><span style="color: #000000; "><br />
</span><span style="color: #000000; ">./</span><span style="color: #000000; ">configure&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">user</span><span style="color: #000000; ">=</span><span style="color: #000000; ">nginx&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">group</span><span style="color: #000000; ">=</span><span style="color: #000000; ">nginx&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">add</span><span style="color: #000000; ">-</span><span style="color: #000000; ">module</span><span style="color: #000000; ">=../</span><span style="color: #000000; ">ngx_cache_purge</span><span style="color: #000000; ">-</span><span style="color: #800000; ">1.0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">prefix</span><span style="color: #000000; ">=/</span><span style="color: #000000; ">home</span><span style="color: #000000; ">/</span><span style="color: #000000; ">nginx&nbsp;</span><span style="color: #000000; ">\</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">with</span><span style="color: #000000; ">-</span><span style="color: #000000; ">http_stub_status_module<br />
make&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">&nbsp;make&nbsp;install</span></div>
</p>
<p style="margin-top: 0px; margin-bottom: 0px; ">以上就安装成功了，下面就是设置/home/nginx/conf/nginx.conf文件了。<br />
下面的命令实在http模块里面，但是又在server模块之上。</p>
<p style="margin-top: 0px; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">proxy_cache_path&nbsp;&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">tmp</span><span style="color: #000000; ">/</span><span style="color: #000000; ">nginx_cache&nbsp;&nbsp;levels</span><span style="color: #000000; ">=</span><span style="color: #800000; ">1</span><span style="color: #000000; ">:</span><span style="color: #800000; ">2</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;keys_zone</span><span style="color: #000000; ">=</span><span style="color: #000000; ">cache_one</span><span style="color: #000000; ">:</span><span style="color: #000000; ">200m&nbsp;inactive</span><span style="color: #000000; ">=</span><span style="color: #000000; ">10m&nbsp;max_size</span><span style="color: #000000; ">=</span><span style="color: #000000; ">5m</span></div>
</p>
<p style="margin-top: 0px; margin-bottom: 0px; "><br />
levels指定该缓存空间有两层hash目录，第一层目录是1个字母，第二层为2个字母，保存的文件名就会类似/tmp/nginx_cache/0/da/9cebc9546cefbf52275a01317d96cda0 ;keys_zone为这个空间起个名字，比如上面的cache_one，200m指空间大小为200MB;inactive的10m指缓存默认时长10分钟;max_size的5m是指单个文件超过5m的就不缓存;clean_time指定一分钟清理一次缓存。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">接下来就是在server模块里面配置cache了。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">proxy_cache_valid&nbsp;&nbsp;</span><span style="color: #800000; ">200</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">304</span><span style="color: #000000; ">&nbsp;1h;<br />
proxy_cache_valid&nbsp;&nbsp;</span><span style="color: #800000; ">301</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">302</span><span style="color: #000000; ">&nbsp;1h;<br />
proxy_cache&nbsp;cache_one;<br />
proxy_cache_valid&nbsp;any&nbsp;1m;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;其它文件保存1分钟<br />
#&nbsp;hash&nbsp;key</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">proxy_cache_key&nbsp;</span><span style="color: #800080; ">$host$uri$is_args$args</span><span style="color: #000000; ">;</span></div>
</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">上面的例子是说HTTP CODE为200，304，301，302的都缓存一个小时，使用的缓存名称是cache_one，就是在http里面定义的缓存名称。其它类型的缓存时间是1分钟。缓存的文件名是主机名+地址+参数。比如说我们进去看看我们的缓存文件，在目录/tmp/nginx_cache中：</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">[root</span><span style="color: #800080; ">@xylz</span><span style="color: #000000; ">&nbsp;nginx_cache]</span><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;ll&nbsp;/tmp/nginx_cache/</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">总用量&nbsp;56K<br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">3</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">48</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">0</span><span style="color: #000000; "><br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">3</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">50</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">1</span><span style="color: #000000; "><br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">3</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">22</span><span style="color: #000000; ">:</span><span style="color: #800000; ">04</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; "><br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">3</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">22</span><span style="color: #000000; ">:</span><span style="color: #800000; ">09</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">5</span><span style="color: #000000; "><br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">3</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">49</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">6</span><span style="color: #000000; "><br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">5</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">49</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">7</span><span style="color: #000000; "><br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">3</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">49</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">8</span><span style="color: #000000; "><br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">22</span><span style="color: #000000; ">:</span><span style="color: #800000; ">09</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">9</span><span style="color: #000000; "><br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">3</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">49</span><span style="color: #000000; ">&nbsp;a<br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">5</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">52</span><span style="color: #000000; ">&nbsp;b<br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">3</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">50</span><span style="color: #000000; ">&nbsp;c<br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">5</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">48</span><span style="color: #000000; ">&nbsp;d<br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">52</span><span style="color: #000000; ">&nbsp;e<br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">21</span><span style="color: #000000; ">:</span><span style="color: #800000; ">49</span><span style="color: #000000; ">&nbsp;f<br />
[root</span><span style="color: #800080; ">@xylz</span><span style="color: #000000; ">&nbsp;nginx_cache]</span><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;ll&nbsp;/tmp/nginx_cache/f/</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">总用量&nbsp;</span><span style="color: #800000; ">8</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K<br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">2</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">22</span><span style="color: #000000; ">:</span><span style="color: #800000; ">09</span><span style="color: #000000; ">&nbsp;2a<br />
drwx</span><span style="color: #000000; ">------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">2</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">22</span><span style="color: #000000; ">:</span><span style="color: #800000; ">02</span><span style="color: #000000; ">&nbsp;8b<br />
[root</span><span style="color: #800080; ">@xylz</span><span style="color: #000000; ">&nbsp;nginx_cache]</span><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;ll&nbsp;/tmp/nginx_cache/f/2a/</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">总用量&nbsp;</span><span style="color: #800000; ">4</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0K<br />
</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rw</span><span style="color: #000000; ">-------</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">1</span><span style="color: #000000; ">&nbsp;nginx&nbsp;nginx&nbsp;</span><span style="color: #800000; ">2</span><span style="color: #000000; ">.</span><span style="color: #000000; ">2K&nbsp;&nbsp;1月&nbsp;</span><span style="color: #800000; ">28</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">22</span><span style="color: #000000; ">:</span><span style="color: #800000; ">09</span><span style="color: #000000; ">&nbsp;aaf88d70a381d91b298d3a05f06572af</span></div>
</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">最后我们使用ngx_purge_module来开放一个地址出来允许手动清除缓存。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;location&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">purge(</span><span style="color: #000000; ">/.*</span><span style="color: #000000; ">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_cache_purge&nbsp;&nbsp;&nbsp;&nbsp;cache_one&nbsp;&nbsp;&nbsp;</span><span style="color: #800080; ">$host</span><span style="color: #000000; ">$</span><span style="color: #800000; ">1</span><span style="color: #800080; ">$is_args$args</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; "><br />
在上面中$1就表示我们要清除的地址(uri，如果有参数，需要参数)。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">好了我们来看一个效果。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">www</span><span style="color: #000000; ">.</span><span style="color: #000000; "><a title="imxylz" href="http://imxylz.cn" target="_blank">imxylz</a></span><span style="color: #000000; ">.</span><span style="color: #000000; ">info&nbsp;GET&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">p</span><span style="color: #000000; ">/</span><span style="color: #800000; ">227</span><span style="color: #000000; ">.</span><span style="color: #000000; ">html&nbsp;HTTP</span><span style="color: #000000; ">/</span><span style="color: #800000; ">1.0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">200</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">9951</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">0.252</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">0.252</span><span style="color: #000000; "><br />
www</span><span style="color: #000000; ">.</span><span style="color: #000000; "><a title="imxylz" href="http://imxylz.cn" target="_blank">imxylz</a></span><span style="color: #000000; ">.</span><span style="color: #000000; ">info&nbsp;GET&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">p</span><span style="color: #000000; ">/</span><span style="color: #800000; ">227</span><span style="color: #000000; ">.</span><span style="color: #000000; ">html&nbsp;HTTP</span><span style="color: #000000; ">/</span><span style="color: #800000; ">1.0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">200</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">9951</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">0.000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; "><br />
www</span><span style="color: #000000; ">.</span><span style="color: #000000; "><a title="imxylz" href="http://imxylz.cn" target="_blank">imxylz</a></span><span style="color: #000000; ">.</span><span style="color: #000000; ">info&nbsp;GET&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">p</span><span style="color: #000000; ">/</span><span style="color: #800000; ">227</span><span style="color: #000000; ">.</span><span style="color: #000000; ">html&nbsp;HTTP</span><span style="color: #000000; ">/</span><span style="color: #800000; ">1.0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">200</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">9951</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">0.000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span></div>
</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">可以看到除了第一次使用了252毫秒以外，第二次第三次都没有花费后端apache服务器的时间，而且每次发送的字节内容是固定的。实际上这里/p/227.html是wordpress动态生成的内容，默认地址应该是?id=227,只不过我将URL重写了，便于搜索引擎爬去而已。</p>
<p style="margin-top: 0px; margin-bottom: 0px; ">
然后我们使用地址/purge/p/227.html来清除缓存。</p>
<p style="margin-top: 0px; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">Successful&nbsp;purge<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;</span><span style="color: #000000; ">:</span><span style="color: #000000; ">&nbsp;www</span><span style="color: #000000; ">.</span><span style="color: #000000; "><a title="imxylz" href="http://imxylz.cn" target="_blank">imxylz</a></span><span style="color: #000000; ">.</span><span style="color: #000000; ">info</span><span style="color: #000000; ">/</span><span style="color: #000000; ">p</span><span style="color: #000000; ">/</span><span style="color: #800000; ">227</span><span style="color: #000000; ">.</span><span style="color: #000000; ">html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Path</span><span style="color: #000000; ">:</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">tmp</span><span style="color: #000000; ">/</span><span style="color: #000000; ">nginx_cache</span><span style="color: #000000; ">/</span><span style="color: #800000; ">9</span><span style="color: #000000; ">/</span><span style="color: #800000; ">66</span><span style="color: #000000; ">/</span><span style="color: #000000; ">dfea2886862c4eec9ef855215c563</span></div>
</p>
<p style="margin-top: 0px; margin-bottom: 0px; "><br />
然后再访问就可以看到没有缓存了。</p>
<p style="margin-top: 0px; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">www</span><span style="color: #000000; ">.</span><span style="color: #000000; "><a title="imxylz" href="http://imxylz.cn" target="_blank">imxylz</a></span><span style="color: #000000; ">.</span><span style="color: #000000; ">info&nbsp;GET&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">p</span><span style="color: #000000; ">/</span><span style="color: #800000; ">227</span><span style="color: #000000; ">.</span><span style="color: #000000; ">html&nbsp;HTTP</span><span style="color: #000000; ">/</span><span style="color: #800000; ">1.0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">200</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">9951</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">0.262</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">0.262</span></div>
</p>
<p style="margin-top: 0px; margin-bottom: 0px; "><br />
当然了，如果想php/jsp等不使用缓存，那么就配一个location，同时不配置proxy_cache即可。location的条件可以如下：</p>
<p style="margin-top: 0px; margin-bottom: 0px; ">
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&nbsp;&nbsp; &nbsp;location&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">.*\.</span><span style="color: #000000; ">(php</span><span style="color: #000000; ">|</span><span style="color: #000000; ">jsp</span><span style="color: #000000; ">|</span><span style="color: #000000; ">cgi)</span><span style="color: #000000; ">?</span><span style="color: #000000; ">$<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header&nbsp;Host&nbsp;&nbsp;</span><span style="color: #800080; ">$host</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header&nbsp;X</span><span style="color: #000000; ">-</span><span style="color: #000000; ">Forwarded</span><span style="color: #000000; ">-</span><span style="color: #0000FF; ">For</span><span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #800080; ">$remote_addr</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass&nbsp;http</span><span style="color: #000000; ">://</span><span style="color: #000000; ">backend_server;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</p>
<p style="margin-top: 0px; margin-bottom: 0px; "><br />
</p>
</div>
</span><img src ="http://www.blogjava.net/xylz/aggbug/311234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">imxylz</a> 2010-01-29 16:09 <a href="http://www.blogjava.net/xylz/archive/2010/01/29/311234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nginx中的地址location</title><link>http://www.blogjava.net/xylz/archive/2010/01/29/311233.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Fri, 29 Jan 2010 08:05:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2010/01/29/311233.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/311233.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2010/01/29/311233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/311233.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/311233.html</trackback:ping><description><![CDATA[<span style="font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 19px; ">
<h2 style="margin-top: 1em; margin-bottom: 0.6em; font-weight: normal; font-size: 1.44em; ">Nginx 中的地址(location)</h2>
<p style="margin-top: 0px; margin-bottom: 0px; "><strong>语法</strong>: location [=|~|~*|^~|@] /uri/ { ... }</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; "><strong>默认值</strong>: no</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; "><strong>上下文</strong>: server</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">location可以配置依赖于URI的请求，根据不同的规则将请求转发到相应的后端服务器上。location的path规则支持正则表达式。 为了使用正则表达式，必须使用下面的匹配符：</p>
<ul style="margin-top: 0px; margin-bottom: 0px; ">
    <li>~* 不区分大小写的正则表达式</li>
    <li>~ 区分大小写的正则表达式</li>
</ul>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">匹配的规则是优先使用常量字符串（非正则表达式），如果任何一个常量字符串匹配就停止匹配，返回匹配的结果。如果常量字符串不匹配就匹配正则表达式，找到第一个匹配的正则表达式规则就停止匹配，返回匹配的结果。如果正则表达式也不匹配就匹配URL的PATH（一级一级往上匹配，最终到/）。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">"="仅仅匹配URI完全一样的地址。显然正则表达式的匹配速度是慢于字符串的直接匹配的，所以如果一个地址是频繁访问的话，使用"="可以提高匹配的速度。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; "><a name="nginx_match_rules" id="nginx_match_rules" style="text-decoration: none; width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "></a>任何一条不使用 "=" 或者 "^~" 前缀的常量字符串规则匹配就立即停止终止匹配。 小结，匹配规则如下：</p>
<div class="vspace" style="margin-top: 1.33em; "></div>
<ol style="margin-top: 0px; margin-bottom: 0px; ">
    <li>匹配"="的规则，如果完全匹配，终止匹配。</li>
    <li>匹配普通字符串，如果匹配带有"^~"前缀的，终止匹配。</li>
    <li>匹配正则表达式，匹配的顺序按照配置文件中的定义顺序。</li>
    <li>如果规则3匹配一个结果就终止匹配，否则使用规则2中的结果。</li>
</ol>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">特别强调的是，nginx不匹配编码后的字符串，比如"/images/%20/test"中带有一个空格，那么必须使用"/images/ /test"才能匹配，而不是使用编码后的字符。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">下面是一个例子。</p>
<div class="vspace" style="margin-top: 1.33em; "></div>
<pre class="escaped" style="font-size: 0.9em; font-family: 'Lucida Console', 'Andale Mono', 'Courier New', Courier, monospace; line-height: 1.2em; margin-top: 0px; margin-bottom: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #dddddd; background-position: initial initial; background-repeat: initial initial; ">location  = / {
#仅仅匹配地址"/"
[规则A]
}
location  / {
# 匹配任何一个以"/"开头的地址，所以说基本上匹配所有地址，但是正则表达式可能优先于此匹配。
[规则B]
}
location ^~ /images/ {
# 匹配任何以"/images"开头的地址，此匹配规则要优先于正则表达式。
[规则C]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配任何以"gif", "jpg", 或者".jpeg"结尾的地址。但是"/images/"目录中的文件会被规则C优先匹配。
[规则D]
}
</pre>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">例如下面一些请求：</p>
<pre class="escaped" style="font-size: 0.9em; font-family: 'Lucida Console', 'Andale Mono', 'Courier New', Courier, monospace; line-height: 1.2em; margin-top: 0px; margin-bottom: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #dddddd; background-position: initial initial; background-repeat: initial initial; ">/ -&gt; 规则A
/documents/document.html -&gt; 规则B
/images/1.gif -&gt; 规则C
/documents/1.jpg -&gt; 规则D
</pre>
<p style="margin-top: 0px; margin-bottom: 0px; ">四种规则可以以任何顺序在配置文件中定义，同一条规则多条正则表达式匹配时，依赖其在配置文件中的顺序。另外，嵌套的location可能导致未知的匹配结果。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px; ">另外，前缀"@" 比较特别，用来处理<a class="wikilink" href="http://www.imxylz.info/wiki/index.php?n=Nginx.Nginx%e6%a0%b8%e5%bf%83%e6%a8%a1%e5%9d%97#error_page" style="text-decoration: none; ">错误页面</a>和<a class="wikilink" href="http://www.imxylz.info/wiki/index.php?n=Nginx.Nginx%e6%a0%b8%e5%bf%83%e6%a8%a1%e5%9d%97#try_files" style="text-decoration: none; ">尝试页面</a>（多页面时顺序匹配规则）。</p>
</span><img src ="http://www.blogjava.net/xylz/aggbug/311233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">imxylz</a> 2010-01-29 16:05 <a href="http://www.blogjava.net/xylz/archive/2010/01/29/311233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>