??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品久久精品亚洲人,亚洲精品免费在线,这里只有精品66http://www.aygfsteel.com/xylz/category/43786.htmlx后端架构、中间g、分布式和高性能RESTful服务zh-cnWed, 11 Sep 2013 19:19:44 GMTWed, 11 Sep 2013 19:19:44 GMT60甌SSL证书及Nginx支持HTTPShttp://www.aygfsteel.com/xylz/archive/2013/09/11/403965.htmlimxylzimxylzWed, 11 Sep 2013 13:58:00 GMThttp://www.aygfsteel.com/xylz/archive/2013/09/11/403965.htmlhttp://www.aygfsteel.com/xylz/comments/403965.htmlhttp://www.aygfsteel.com/xylz/archive/2013/09/11/403965.html#Feedback0http://www.aygfsteel.com/xylz/comments/commentRss/403965.htmlhttp://www.aygfsteel.com/xylz/services/trackbacks/403965.html阅读全文

imxylz 2013-09-11 21:58 发表评论
]]>
使用Nginx的proxyCache~存功能http://www.aygfsteel.com/xylz/archive/2010/01/29/311234.htmlimxylzimxylzFri, 29 Jan 2010 08:09:00 GMThttp://www.aygfsteel.com/xylz/archive/2010/01/29/311234.htmlhttp://www.aygfsteel.com/xylz/comments/311234.htmlhttp://www.aygfsteel.com/xylz/archive/2010/01/29/311234.html#Feedback0http://www.aygfsteel.com/xylz/comments/commentRss/311234.htmlhttp://www.aygfsteel.com/xylz/services/trackbacks/311234.html

使用Nginx的proxyCache~存功能

Nginx?.7.48版本开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作KeyQ用md5~码哈希后保存在盘上,所以它可以支持LURL链接Q同时也支持404/301/302q样的非200状态码。虽然目前官方的Nginx Web~存服务只能为指定URL或状态码讄q期旉Q不支持cMSquid的PURGE指oQ手动清除指定缓存页面,但是Q通过一个第三方的Nginx 模块Q可以清除指定URL的缓存?/p>

Nginx的Web~存服务主要由proxy_cache相关指o集和fastcgi_cache 相关指o集构成,前者用于反向代理时Q对后端内容源服务器q行~存Q后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一栗?/p>

最新的Nginx 0.8.31版本Qproxy_cache和fastcgi_cache已经比较完善Q加上第三方的ngx_cache_purge模块Q用于清除指?URL的缓存)Q已l可以完全取代Squid。我们已l在生环境使用?Nginx ?proxy_cache ~存功能过两个月,十分E_Q速度不逊于 Squid?/p>

在功能上QNginx已经具备Squid所拥有的Web~存加速功能、清除指定URL~存的功能。而在性能上,Nginx对多核CPU的利用,胜过Squid不少。另外,在反向代理、负载均衡、健h查、后端服务器故障转移?Rewrite重写、易用性上QNginx也比Squid强大得多。这使得一台Nginx可以同时作ؓ“负蝲均衡服务?#8221;?#8220;Web~存服务?#8221;来用?/p>

Nginx的基依赖{这里就不再安装了,我们直接从Nginx开始?/p>

wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz
tar xvzf ngx_cache_purge
-1.0.tar.gz
wget http
://nginx.org/download/nginx-0.8.31.tar.gz
tar zxvf nginx
-0.8.31.tar.gz
 cd nginx
-0.8.31/
./configure --user=nginx --group=nginx --add-module=../ngx_cache_purge-1.0 --prefix=/home/nginx \
    
--with-http_stub_status_module
make 
& make install

以上安装成功了Q下面就是设|?home/nginx/conf/nginx.conf文g了?br /> 下面的命令实在http模块里面Q但是又在server模块之上?/p>

proxy_cache_path  /tmp/nginx_cache  levels=1:2   keys_zone=cache_one:200m inactive=10m max_size=5m


levels指定该缓存空间有两层hash目录Q第一层目录是1个字母,W二层ؓ2个字母,保存的文件名׃cM/tmp/nginx_cache/0/da/9cebc9546cefbf52275a01317d96cda0 ;keys_zone个空间v个名字,比如上面的cache_oneQ?00m指空间大ؓ200MB;inactive?0m指缓存默认时?0分钟;max_size?m是指单个文g过5m的就不缓?clean_time指定一分钟清理一ơ缓存?/p>

接下来就是在server模块里面配置cache了?/p>

proxy_cache_valid  200 304 1h;
proxy_cache_valid  
301 302 1h;
proxy_cache cache_one;
proxy_cache_valid any 1m;
# 其它文g保存1分钟
# hash key

proxy_cache_key $host$uri$is_args$args;

上面的例子是说HTTP CODE?00Q?04Q?01Q?02的都~存一个小Ӟ使用的缓存名U是cache_oneQ就是在http里面定义的缓存名U。其它类型的~存旉?分钟。缓存的文g名是L?地址+参数。比如说我们q去看看我们的缓存文Ӟ在目?tmp/nginx_cache中:

[root@xylz nginx_cache]# ll /tmp/nginx_cache/
ȝ?nbsp;56K
drwx
------ 3 nginx nginx 4.0K  1?nbsp;28 21:48 0
drwx
------ 3 nginx nginx 4.0K  1?nbsp;28 21:50 1
drwx
------ 3 nginx nginx 4.0K  1?nbsp;28 22:04 4
drwx
------ 3 nginx nginx 4.0K  1?nbsp;28 22:09 5
drwx
------ 3 nginx nginx 4.0K  1?nbsp;28 21:49 6
drwx
------ 5 nginx nginx 4.0K  1?nbsp;28 21:49 7
drwx
------ 3 nginx nginx 4.0K  1?nbsp;28 21:49 8
drwx
------ 4 nginx nginx 4.0K  1?nbsp;28 22:09 9
drwx
------ 3 nginx nginx 4.0K  1?nbsp;28 21:49 a
drwx
------ 5 nginx nginx 4.0K  1?nbsp;28 21:52 b
drwx
------ 3 nginx nginx 4.0K  1?nbsp;28 21:50 c
drwx
------ 5 nginx nginx 4.0K  1?nbsp;28 21:48 d
drwx
------ 4 nginx nginx 4.0K  1?nbsp;28 21:52 e
drwx
------ 4 nginx nginx 4.0K  1?nbsp;28 21:49 f
[root
@xylz nginx_cache]# ll /tmp/nginx_cache/f/
ȝ?nbsp;8.0K
drwx
------ 2 nginx nginx 4.0K  1?nbsp;28 22:09 2a
drwx
------ 2 nginx nginx 4.0K  1?nbsp;28 22:02 8b
[root
@xylz nginx_cache]# ll /tmp/nginx_cache/f/2a/
ȝ?nbsp;4.0K
-rw------- 1 nginx nginx 2.2K  1?nbsp;28 22:09 aaf88d70a381d91b298d3a05f06572af

最后我们用ngx_purge_module来开放一个地址出来允许手动清除~存?/p>

        location ~ /purge(/.*) {
            proxy_cache_purge    cache_one   
$host$1$is_args$args;
            }


在上面中$1pC我们要清除的地址(uriQ如果有参数Q需要参??/p>

好了我们来看一个效果?/p>

www.imxylz.info GET /p/227.html HTTP/1.0 200 9951 0.252 0.252
www
.imxylz.info GET /p/227.html HTTP/1.0 200 9951 0.000 -
www
.imxylz.info GET /p/227.html HTTP/1.0 200 9951 0.000 -

可以看到除了W一ơ用了252毫秒以外Q第二次W三ơ都没有p后端apache服务器的旉Q而且每次发送的字节内容是固定的。实际上q里/p/227.html是wordpress动态生成的内容Q默认地址应该?id=227,只不q我URL重写了,便于搜烦引擎爬去而已?/p>

然后我们使用地址/purge/p/227.html来清除缓存?/p>

Successful purge
            Key 
: www.imxylz.info/p/227.html
            Path
: /tmp/nginx_cache/9/66/dfea2886862c4eec9ef855215c563


然后再访问就可以看到没有~存了?/p>

www.imxylz.info GET /p/227.html HTTP/1.0 200 9951 0.262 0.262


当然了,如果想php/jsp{不使用~存Q那么就配一个locationQ同时不配置proxy_cache卛_。location的条件可以如下:

    location ~ .*\.(php|jsp|cgi)?$
            {
            proxy_set_header Host  
$host;
            proxy_set_header X
-Forwarded-For  $remote_addr;
            proxy_pass http
://backend_server;
            }




imxylz 2010-01-29 16:09 发表评论
]]>
Nginx中的地址locationhttp://www.aygfsteel.com/xylz/archive/2010/01/29/311233.htmlimxylzimxylzFri, 29 Jan 2010 08:05:00 GMThttp://www.aygfsteel.com/xylz/archive/2010/01/29/311233.htmlhttp://www.aygfsteel.com/xylz/comments/311233.htmlhttp://www.aygfsteel.com/xylz/archive/2010/01/29/311233.html#Feedback0http://www.aygfsteel.com/xylz/comments/commentRss/311233.htmlhttp://www.aygfsteel.com/xylz/services/trackbacks/311233.html

Nginx 中的地址(location)

语法: location [=|~|~*|^~|@] /uri/ { ... }

默认?/strong>: no

上下?/strong>: server

location可以配置依赖于URI的请求,Ҏ不同的规则将h转发到相应的后端服务器上。location的path规则支持正则表达式?Z使用正则表达式,必须使用下面的匹配符Q?/p>

  • ~* 不区分大写的正则表辑ּ
  • ~ 区分大小写的正则表达?/li>

匚w的规则是优先使用帔R字符Ԍ非正则表辑ּQ,如果M一个常量字W串匚w停止匹配,q回匚w的结果。如果常量字W串不匹配就匚w正则表达式,扑ֈW一个匹配的正则表达式规则就停止匚wQ返回匹配的l果。如果正则表辑ּ也不匚w匹配URL的PATHQ一U一U往上匹配,最l到/Q?/p>

"="仅仅匚wURI完全一L地址。显然正则表辑ּ的匹配速度是慢于字W串的直接匹配的Q所以如果一个地址是频J访问的话,使用"="可以提高匚w的速度?/p>

M一条不使用 "=" 或?"^~" 前缀的常量字W串规则匚wq卛_止终止匹配?结Q匹配规则如下:

  1. 匚w"="的规则,如果完全匚wQ终止匹配?/li>
  2. 匚w普通字W串Q如果匹配带?^~"前缀的,l止匚w?/li>
  3. 匚w正则表达式,匚w的顺序按照配|文件中的定义顺序?/li>
  4. 如果规则3匚w一个结果就l止匚wQ否则用规?中的l果?/li>

特别的是Qnginx不匹配编码后的字W串Q比?/images/%20/test"中带有一个空|那么必须使用"/images/ /test"才能匚wQ而不是用编码后的字W?/p>

下面是一个例子?/p>

location  = / {
#仅仅匚w地址"/"
[规则A]
}
location  / {
# 匚wM一个以"/"开头的地址Q所以说基本上匹配所有地址Q但是正则表辑ּ可能优先于此匚w?
[规则B]
}
location ^~ /images/ {
# 匚wM?/images"开头的地址Q此匚w规则要优先于正则表达式?
[规则C]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匚wM?gif", "jpg", 或?.jpeg"l尾的地址。但?/images/"目录中的文g会被规则C优先匚w?
[规则D]
}

例如下面一些请求:

/ -> 规则A
/documents/document.html -> 规则B
/images/1.gif -> 规则C
/documents/1.jpg -> 规则D

四种规则可以以Q何顺序在配置文g中定义,同一条规则多条正则表辑ּ匚wӞ依赖其在配置文g中的序。另外,嵌套的location可能D未知的匹配结果?/p>

另外Q前~"@" 比较特别Q用来处?a class="wikilink" style="text-decoration: none; ">错误面?a class="wikilink" style="text-decoration: none; ">试面Q多面旉序匹配规则)?/p>

imxylz 2010-01-29 16:05 发表评论
]]>
վ֩ģ壺 | | | | | Ž| | Ӫɽ| ɽ| | | Դ| | | | | ͨ| | ǹ| | | ں| | ʡ| | ¬| ̫| | ̰| | ɳ| | | Ѩ| Ǽ| ǭ| ˶| ԣ| ¡| | ƽ|