1
sophymax 2015-06-16 21:25:37 +08:00 via iPad
openresty
|
2
ksword 2015-06-16 21:32:45 +08:00 1
可以试下try_files $uri /create.php?pic=$uri =404;
|
3
gamexg 2015-06-16 21:36:21 +08:00 1
|
4
ryd994 2015-06-16 23:37:26 +08:00 via Android 1
其实想缓存的话并不需要这样
动态页面直接输出不管创建文件的事 利用fastcgi_store来保存 利用try_files来检查 http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_store 当然,如果你需要的只是对热页面的缓存的话,fastcgi_cache会好用得多 |
5
pupboss 2015-06-16 23:45:59 +08:00
rewrite ^/(.*.jpg)$ :91/create.php?pic=$1 permanent;
|
6
cevincheung 2015-06-16 23:49:16 +08:00
难道这不是个rewrite完成的工作么?
|
7
ryd994 2015-06-17 03:15:02 +08:00 1
|
8
LazyZhu 2015-06-17 07:24:45 +08:00 1
这个只需要try_files配合一个命名location来proxy_pass就可以了:
https://gist.github.com/LazyZhu/2cbfbeea75eae63a450e 具体参数自己修正. |
9
gs038538 2015-06-17 08:09:27 +08:00
rewrite
重定向应该可以的。 |
10
andybest OP |
12
gamexg 2015-06-17 09:15:06 +08:00 1
@andybest
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if http://www.nginx.cn/216.html#if 不过 nginx 0.7 增加的 try_files 更简单了。 http://luokr.com/p/14 |
13
msg7086 2015-06-17 09:32:39 +08:00 1
就是try_files嘛。要复杂的实现可以写lua。
我之前写过一个论坛头像CDN就是用lua比对本地和远程服务器上的写入时间,本地新就返回本地,本地和远程一样就重定向到远程CDN去。 |
16
cevincheung 2015-06-17 11:17:01 +08:00 1
|
17
ryd994 2015-06-17 12:28:58 +08:00 1
@cevincheung if很好玩么?if is evil,更别说用if判断文件存在了,
早就该用try_files代替的东西,各种文档吐槽无数遍,偏有半桶水: http://wiki.nginx.org/Pitfalls#Check_IF_File_Exists fastcgi_cache 或 fastcgi_store + try_files,根据需求使用即可 |
19
ryd994 2015-06-17 13:05:27 +08:00 1
https://gist.github.com/renyidong/f93ca0a3beed67abe02a
两种风格任选 proxy_cache 部分在内存,性能更好,适合比较简单的缓存规则 proxy_store 读的是硬盘,而且要自己删文件来实现过期,但规则可以更复杂 如果是fcgi的话就用换成fcgi的指令,反正用法基本一样的 |