Nginx Cache中$request_filename(转)
2015-06-25 09:54
656 查看
对于Nginx的$request_filename变量指的就是请求的资源路径。在原先 OpenCDN节点端配置里面是这样的。
对于!-f $request_filename这一段配置,主要意思就是如果location匹配了,发现请求的文件不存在,就回滚源站。那么怎么判定文件是否存在呢?Nginx去自定义的root路径下去找,如果找不到就去默认的root路径,这样找不到才回滚源站。
但是对于CDN的Cache配置这样就不对了,因为Nginx看到request_filename,不可能去Cache下面去找吧,Cache下面的文件名啥的都是hash的字符,文件里面的KEY才是文件名,不切实际。我也做过测试,上面和下面的都滚回源站,没什么区别。
location ~ .*\.(png|html|htm|ico|jpg|jpeg|bmp|gif|js|css)$ { ## 忽略浏览器的缓存 proxy_ignore_headers Cache-Control; proxy_ignore_headers Expires; proxy_cache cache_one; proxy_cache_valid 200 304 1h; proxy_cache_key $host$uri$is_args$args; expires 1h; ## 此处为host锁定,可定制有无 proxy_set_header Host $host; add_header OpenCDN-Cache "$upstream_cache_status"; if (!-f $request_filename) { proxy_pass http://ocdn_www.firefoxbug.net; break; } }
对于!-f $request_filename这一段配置,主要意思就是如果location匹配了,发现请求的文件不存在,就回滚源站。那么怎么判定文件是否存在呢?Nginx去自定义的root路径下去找,如果找不到就去默认的root路径,这样找不到才回滚源站。
但是对于CDN的Cache配置这样就不对了,因为Nginx看到request_filename,不可能去Cache下面去找吧,Cache下面的文件名啥的都是hash的字符,文件里面的KEY才是文件名,不切实际。我也做过测试,上面和下面的都滚回源站,没什么区别。
# if (!-f $request_filename) { proxy_pass http://ocdn_www.firefoxbug.net; # break; # }
相关文章推荐
- win7下搭建nginx+php的开发环境(转)
- NGINX引入线程池 性能提升9倍
- mac搭建nginx与php
- Nginx网站服务器的安装及LEMP平台应用
- nginx总结
- mac nginx (48: Address already in use)
- Nginx引入线程池 性能提升9倍
- Nginx + CGI/FastCGI + C/Cpp
- 分析nginx日志脚本之python
- nginx location配置
- samba---启动smaba后nginx 11 resource temporarily unavailable
- 绝对详细!Nginx基本配置、性能优化指南
- Nginx搭建图片服务器
- 山寨技术下的网站图片服务器(NGINX)
- nginx的配置和优化(隐藏版本号、gzip、expires、防盗链......等)
- 如何使用源码编译安装Nginx服务器
- LNMP第二部分nginx、php配置(用户认证、域名重定向、日志、配置缓存、防盗链) 推荐
- 构建基于Nginx的文件服务器思路与实现
- Nginx在windows下使用为什么死掉
- nginx与Elasticsearch结合使用