Nginx服务器配置图片站点的技巧
作者:00zhhl_513 | 来源:互联网 | 2014-05-28 09:40
应用场景:uploads目录是用来存放上传到服务器的图片文件的根目录,在根目录下可能存在分类的文件夹,在这些文件夹中存放原始图片例如src.jpg,同时可能存在该图片的对应的小图s_src.jpg。假设uploads下的busipic文件夹下有a.jpg,s_a.jpg,b.jpg,default.jpg,
应用场景:
uploads目录是用来存放上传到服务器的图片文件的根目录,在根目录下可能存在分类的文件夹,在这些文件夹中存放原始图片例如src.jpg,
同时可能存在该图片的对应的小图s_src.jpg。
假设uploads下的busipic文件夹下有a.jpg,s_a.jpg,b.jpg,default.jpg,servername为www.exam.com
如果访问www.exam.com/uploads/busipic/s_a.jpg返回www.exam.com/uploads/busipic/s_a.jpg,
访问www.exam.com/uploads/busipic/s_b.jpg返回www.exam.com/uploads/busipic/b.jpg,
访问www.exam.com/uploads/busipic/b.jpg返回www.exam.com/uploads/busipic/b.jpg,
访问www.exam.com/uploads/busipic/s_aaa.jpg返回www.exam.com/uploads/busipic/default.jpg
访问www.exam.com/uploads/busipic/返回www.exam.com/uploads/busipic/default.jpg
访问www.exam.com/uploads/busipic/dfdf.jpg返回www.exam.com/uploads/busipic/default.jpg
#访问小图
location ~ ^/uploads/(.*)?/s_.*$ {
root html;
if (!-f $request_filename)
{
#小图片不存在情况
rewrite ^(/uploads/.*/)s_(.*)$ $1$2
last;
#去掉url中的s_,使其访问大图,注意此处必须用last,不能用break,因为last会对server标签重新发起请求,而break就直接使用当前的location中的数据源来访问
}
}
#访问原图,如果原图片不存在,就给出当前目录下的缺省图片,要是当前目录下没有缺省图片,就返回指定目录下的缺省图片(确保指定目录目录存在该文件)
#原图对应的小图是以s_加上原图名字
location ~ ^/uploads/busipic {
root html;
index default.jpg;
if (!-f $request_filename)
{
#原图片不存在,返回前当目录下的缺省图片
rewrite ^(/uploads/.*/).*$ $1default.jpg
break;
}
error_page 404 =200
/default.jpg;
#当目录下的缺省图片不存在时,返回一个指定的缺省文件,确保存在此文件,否则可能进入死循环 注意(404
=200)404后有一个空格,要不然配置会报错,这样的配置是把客户端看到的404 改为200
}
干净的配置项
location ~ ^/uploads/(.*)?/s_.*$ {
root html;
index default.jpg;
if (!-f $request_filename) {
rewrite ^(/uploads/.*/)s_(.*)$ $1$2 last;
}
}
location ~ ^/uploads/busipic {
root html;
index default.jpg;
if (!-f $request_filename) {
rewrite ^(/uploads/.*/).*$ $1default.jpg
break;
}
error_page 404 =200 /test/default.jpg;
log_format main2 '$status '
'"$request_filename" no s_';
access_log logs/host.log main2;
}
推荐阅读
-
本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ...
[详细]
蜡笔小新 2024-12-27 18:20:43
-
1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ...
[详细]
蜡笔小新 2024-12-27 19:32:17
-
-
在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ...
[详细]
蜡笔小新 2024-12-27 21:32:05
-
Java 中的 BigDecimal pow()方法,示例 ...
[详细]
蜡笔小新 2024-12-27 20:54:03
-
本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ...
[详细]
蜡笔小新 2024-12-27 20:40:29
-
本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ...
[详细]
蜡笔小新 2024-12-27 19:52:28
-
探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ...
[详细]
蜡笔小新 2024-12-27 19:49:07
-
本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ...
[详细]
蜡笔小新 2024-12-27 19:44:14
-
本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ...
[详细]
蜡笔小新 2024-12-27 19:42:28
-
本文详细介绍了如何使用Maven高效管理多模块项目,涵盖项目结构设计、依赖管理和构建优化等方面。通过具体的实例和配置说明,帮助开发者更好地理解和应用Maven在复杂项目中的优势。 ...
[详细]
蜡笔小新 2024-12-27 19:29:15
-
本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ...
[详细]
蜡笔小新 2024-12-27 19:22:16
-
本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ...
[详细]
蜡笔小新 2024-12-27 19:05:41
-
本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ...
[详细]
蜡笔小新 2024-12-27 18:51:49
-
本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ...
[详细]
蜡笔小新 2024-12-27 17:52:34
-
本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ...
[详细]
蜡笔小新 2024-12-27 17:40:42
-
00zhhl_513
这个家伙很懒,什么也没留下!