在Nginx中配置image filter模块来实现动态生成缩略图_nginx

先来看一下什么是nginx的image filter模块。

HttpImageFilterModule用来裁剪过大的图片到指定大小,是nginx自带模块,默认不会开启
开启HttpImageFilterModule需要在编译要带上参数 --with-http_image_filter_module

该模块主要有两个指令:
语法: image_filter (test | size | resize width height | crop width height)
默认是: 无
可出现的上下文: location

该指令指定图像的转化形式:

test - 测试回复是否是JPEG、GIF、或PNG图片(不支持BMP等其他格式),出错时返回415。
size - 返回图片的JSON数据,比如:( "Img": ( "width": 100, "height": 100, "type": "gif"))
resize - 根据设置按比例得减小图像,比如100*100的图片,而设置是50*25,减小后的图片为25*25。如果你只想设置一个维度,可以用“-”代替。出错时返回415。
crop - 根据设置按比例得减小图像,然后裁剪成跟设置一样大小的图片。比如100*100的图片,而设置是50*25,减小后的图片为50*50,Nginx会选取中间高度25的像素,形成50*25的图片,所以图片会有缺失。如果你只想设置一个维度,可以用“-”代替。出错时返回415。

语法: image_filter_buffer size
默认值: image_filter_buffer 1M
可出现的位置: http, server, location

该指令设置单图片缓存的最大值,如果过滤的图片大小超过缓存大小,会报错返回415。

现在开始时重点:

有了如上认识再配合locaiont、if、image_filter 就可以让nginx动态生成缩略图了。

假设你的图片位于/img目录下

访问缩略图方式
http://www.jb51.net/img/9GUMJR7200AJ0003_90x90.jpg
访问原图方式
http://www.jb51.net/img/9GUMJR7200AJ0003_90x0.jpg
http://www.jb51.net/img/9GUMJR7200AJ0003_0x50.jpg
http://www.jb51.net/img/9GUMJR7200AJ0003_0x0.jpg
http://www.jb51.net/img/9GUMJR7200AJ0003.jpg

添加如下配置到server上下文即可

    location ~* /img/(.+)_(d+)x(d+).(jpg|gif|png)$ {
      set $h $2;
      set $w $3;
      if ($h = "0") {
        rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last;
      }
      if ($w = "0") {
        rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last;
      }

      #根据给定的长宽生成缩略图
      image_filter resize $h $w;
      #原图最大2M,要裁剪的图片超过2M返回415错误,需要调节参数image_filter_buffer
      image_filter_buffer 2M;             

      #error_page 415       /img/notfound.jpg;
      try_files /img/$1.$4 /img/notfound.jpg;
    }

    location ~* /img {

    }

生成缩略图只是image_filter功能中的一个,它一共支持4种参数:
    test:返回是否真的是图片
    size:返回图片长短尺寸
    corp:截取图片的一部分
    resize:缩放图片

location ~ ^/test/(.*)$ {
      image_filter size;
      root  /var/www/_xxx;
      index index.html index.htm;
    }

输出信息类似:

{ "img" : { "width": 1024, "height": 537, "type": "jpeg" } }

是一个JSON,压力测试了一下,还是很给力,500个并发,CPU占用在17%左右。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索nginx
, 配置
, nginx配置
缩略图
nginx image filter、nginx 缩略图模块、nginx sub filter模块、nginx filter模块、nginx 缩略图,以便于您获取更多的相关知识。

时间: 2024-10-28 19:28:58

在Nginx中配置image filter模块来实现动态生成缩略图_nginx的相关文章

使用Nginx中自带的模块配置缩略图功能的教程_nginx

http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用.安装安装还是很简单的,默认HttpImageFilterModule模块是不会编译进nginx的,所以要在configure时候指定 ./configure arguments

nginx中配置php-FPM教程详解

nginx中配置php-FPM教程 nginx 可以直接调用FPM来驱动php,从此就可以放弃apache了.什么原因不多说了. 先下载php5.4的安装包. 照别人的说法  代码如下 复制代码 ./configure --enable-fastcgi --prefix=/data1/server/php-cgi --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-mysql

nginx中利用image_filter动态生成缩略图示例

先来看一下什么是nginx的image filter模块. HttpImageFilterModule用来裁剪过大的图片到指定大小,是nginx自带模块,默认不会开启 开启HttpImageFilterModule需要在编译要带上参数 --with-http_image_filter_module 该模块主要有两个指令: 语法: image_filter (test | size | resize width height | crop width height) 默认是: 无 可出现的上下文:

asp.net中word导出页面,如何把动态生成的图片也导出word中

问题描述 asp.net中word导出页面,如何把动态生成的图片也导出word中 在word导出页面的时候如何能把生成的图片也导出word里面呢,如果是显示到页面中的话生成的图片是能显示的,但是导入word中的时候就不行了 这是代码 应该怎么才能把图片导出word中呢 解决方案 将asp页面导出到WORDasp.net 页面导出wordasp.net2.0导出生成word 解决方案二: string html=tw.ToString();//存储生成的html代码 html=html.Repla

Nginx中配置开启Nginx Status来查看服务器运行状态_nginx

nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助.为了后续的zabbix监控,我们需要先了解nginx状态页是怎么回事.1. 启用nginx status配置在默认主机里面加上location或者你希望能访问到的主机里面. server { listen *:80 default_server; server_name _; location /ngx_status { stub_status on; access_log off; #all

Nginx中配置过滤爬虫的User-Agent的简单方法_nginx

过去写博客的时候经常出现服务器宕机,网页全部刷不出来,但是Ping服务器的时候又能Ping通.登录SSH看了下top,惊呆了,平均负载13 12 8.瞬间觉得我这是被人DDOS了么?看了下进程基本上都是php-fpm把CPU给占了,去看下日志吧... 一看不得了,基本上都是被一个User Agent叫"YisouSpider"的东西给刷屏了,一看就不知道是哪的蜘蛛,太没节操了. 找到根目录配置区,增加User Agent过滤判断语句,发现叫"YisouSpider"

Nginx中nginx_upload_module上传模块安装配置

安装nginx_upload_module模块    代码如下 复制代码 ./configure –add-module=/usr/local/nginx_upload_module-* make make install 重启nginx即可 以下是我的nginx配置文件 前端页面提交的时候直接提交到 http://dev.local/upload 即可  代码如下 复制代码 server { listen 80; server_name test.local; index index.php

Nginx中Google 扩展代理模块配置教程

据说wen.lu开源了,代码大家可以到github自行下载. [root@hz /]# cd /byrd/tools/ [root@hz tools]# yum install pcre* openssl openssl-devel gcc gcc-c++ wget vim -y [root@hz tools]# git clone https://github.com/cuber/ngx_http_google_filter_module [root@hz tools]# git clone

在nginx中配置pathinfo模式支持thinkphp的URL重写_nginx

最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:修改nginx.conf,找到server中的 location ~ .php${},修改为location ~ .php {},并在其中增加以下内容: 复制代码 代码如下: set $path_info "";set $real_script_name $fas