β

Ngnix:当静态资源不存在时重定向

undefined 190 阅读

最近又没干啥“正经”事儿,倒是把苹果教程网重新装修了一遍,启用了 W3 TOTAL CACHE,配置了我两天终于达到了理想中的效果。

下面记录一下处理过程中遇到的一个小问题,当静态资源不存在时重定向的问题

搞个网站真辛苦,写代码(旁白:还有 CSS !!)就算了,还要会配置服务器,看各种参数= =

下面是正文:

使用场景

服务器 A(网站服务器,www.abc.com):请求 cdn.abc.com/a.png

服务器 B(CDN 服务器,cdn.abc.com):接受请求,发现 a.png 不存在,重定向至 www.abc.com/a.png

如果你使用过 W3TC,应该对这个比较熟悉,选择 【Self Hosted CDN】就是这么个效果。

解决方案

在服务器 B 对应的 nginx 配置文件(一般在 /usr/local/nginx/conf/nginx.conf)中的 server 大括号里增加如下内容:

location ^~ /static/
{
	try_files $uri @ppios;
}

location @ppios
{
	rewrite ^(.*)$ http://www.abc.com/$1;
}

其中第一个 location 的意思是所有对 static 这个目录下的请求,如果你的文件就放在根目录,也可以写成 location /。甚至如果你只处理静态文件,可以写成 location ~/*/*\(gif|png)$ 等等。[1]

括号里面的意思是尝试 serve 这个请求的文件,如果不成功就转到 ppios。

在 ppios 里,我们做了重定向,具体的语法就是标准的正则,不再赘述了。

参考资料

[1] Nginx Location http://wiki.nginx.org/HttpCoreModule#location

[2] Nginx try_files http://wiki.nginx.org/HttpCoreModule#try_files

本文网址:http://dev.ppios.com/2013/02/nginx-redirect-404-request-for-static-files/

作者:undefined
everything starts & ends.
原文地址:Ngnix:当静态资源不存在时重定向, 感谢原作者分享。

发表评论