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

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

./configure arguments: --prefix=/usr/local/nginx --with-http_image_filter_module

PS: HttpImageFilterModule模块需要依赖gd-devel的支持,可以使用yum或apt-get方便地安装,如果未安装回报“/configure: error: the HTTP image filter module requires the GD library.”错误

yum install gd-devel
apt-get install libgd2-xpm libgd2-xpm-dev

make&&make install后就可以进行配置了,做最简单的配置,先让模块可以跑起来^^

location ~ /simg/.*\.jpg$ {
  #proxy_pass   http://10.11.11.11;
  #rewrite "/simg/(.*\.jpg)$" /img/$1 break ;
  image_filter  resize 100 100;
  error_page   415  = /empty;
}

 该模块主要有两个指令:
指令1:
语法: image_filter (test | size | resize width height | crop width height)
默认是: 无
可出现的上下文: location
该指令指定图像的转化形式:
(1)test - 测试回复是否是JPEG、GIF、或PNG图片(不支持BMP等其他格式),出错时返回415。
(2)size - 返回图片的JSON数据,比如:( "Img": ( "width": 100, "height": 100, "type": "gif"))
(3)resize - 根据设置按比例得减小图像,比如100*100的图片,而设置是50*25,减小后的图片为25*25。如果你只想设置一个维度,可以用“-”代替。出错时返回415。
(4)crop - 根据设置按比例得减小图像,然后裁剪成跟设置一样大小的图片。比如100*100的图片,而设置是50*25,减小后的图片为50*50,Nginx会选取中间高度25的像素,形成50*25的图片,所以图片会有缺失。如果你只想设置一个维度,可以用“-”代替。出错时返回415。
指令2:
语法: image_filter_buffer size
默认值: image_filter_buffer 1M
可出现的位置: http, server, location
该指令设置单图片缓存的最大值,如果过滤的图片大小超过缓存大小,会报错返回415。

用法
现在开始是重点:
有了如上认识再配合locaiont、if、image_filter 就可以让nginx动态生成缩略图了。
假设你的图片位于/img目录下
访问缩略图方式

yun_qi_img/9GUMJR7200AJ0003_90x90.jpg

访问原图方式

yun_qi_img/9GUMJR7200AJ0003_90x0.jpg
yun_qi_img/9GUMJR7200AJ0003_0x50.jpg
yun_qi_img/9GUMJR7200AJ0003_0x0.jpg
yun_qi_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 {

    }

    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 {

    }

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

时间: 2024-08-03 10:47:22

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

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

给Python中的MySQLdb模块添加超时功能的教程

  这篇文章主要介绍了给Python中的MySQLdb模块添加超时功能的教程,timeout功能在服务器的运维当中非常有用,需要的朋友可以参考下 使用Python操作MySQL数据库的时候常使用MySQLdb这个模块. 今天在开发的过程发现MySQLdb.connect有些参数没法设置.通过这个页面我们可以看到在connect的时候,可以设置的option和client_flags和MySQL c api相比差不少. 一个很重要的参数 MYSQL_OPT_READ_TIMEOUT没法设置,这个参

Nginx+Tomcat+Https 服务器负载均衡配置实践方案详解_nginx

由于需要,得搭建个nginx+tomcat+https的服务器,搜了搜网上的发现总是有错,现在整理了些有用的,备忘. 环境:Centos6.5.JDK1.8.Tomcat8.Nginx1.10.1 准备材料: 1.JDK1.8安装包jdk-8u102-linux-x64.tar.gz 2.Tomcat8安装包apache-tomcat-8.0.37.tar.gz 3.Nginx1.10安装包nginx-1.10.1.tar.gz 1.JDK安装配置 解压并安装到/usr/local/jdk [r

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服务器的Split Clients模块配置过程_nginx

ngx-http-split-clients模块基于一些特定条件分开客户端连接,(例如ip地址,请求头,cookies等) 示例配置: http { split-clients "${remote-addr}AAA" $variant { 0.5% .one; 2.0% .two; - ""; } server { location / { index index${variant}.html; 可以使用$cookie--作为来源来分离请求,来源字符串使用CRC32

nginx中的limit_req限速设置配置示例_nginx

WIKI: http://wiki.nginx.org/HttpLimitReqModule 漏桶原理(leaky bucket): http://en.wikipedia.org/wiki/Leaky_bucket 实例: #以用户二进制IP地址,定义三个漏桶,滴落速率1-3req/sec,桶空间1m,1M能保持大约16000个(IP)状态 limit_req_zone $binary_remote_addr zone=qps1:1m rate=1r/s; limit_req_zone $bi

nginx中隐藏index.php文件配置方法

配置文件  代码如下 复制代码 /www/wdlinx/nginx-1.2.8/xxxx.com.conf #将默认的localhost块替换成  代码如下 复制代码 location ~ .php($|/) {             fastcgi_pass   127.0.0.1:9000;             fastcgi_index  index.php;             fastcgi_split_path_info ^(.+.php)(.*)$;           

Node.js站点使用Nginx作反向代理时配置GZip压缩的教程_nginx

node.js 开发的站点,如果你也是用了nginx实现反向代理. 那么在服务端可以轻松实现 gzip 压缩,让站点浏览更顺畅. 前提条件: node.js + nginx 反向代理. node.js 需要做的工作: express 4.0以下版本: app.use(express.compress()); //主要是这句 app.use(express.json()); app.use(express.urlencoded()); app.use(express.bodyParser());

C#在winform中实现数据增删改查等功能_C#教程

winform中利用ado.net实现对单表的增删改查的详细例子,具体如下: 1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等.  2.功能具体介绍: 1.首先,我们要先实现基本的数据操作,增删改查这几个操作. (1)先定义一个数据库操作的公共类: using System; using System.Collections.Generic; using System.Linq; using S