lua+nginx实现图片压缩

/ linux / 1 条评论 / 4138浏览

http://192.168.1.233:10000/upload.html

如有裂图 刷新即可(获取的时候 压缩后的图片还没能生成出来)

功能: 图片上传 实现方式:Lua 图片转化:lua+gm

nginx配置:

    server {
        listen       10000;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }


        location ~* /upload/(.*).(gif|jpg|jpeg|png|bmp)$ {
             autoindex on;
              set $orifilename $1;
              set $imgtype $2;
              set $ori_root '/usr/local/nginx/html/upfile';
              set $targetfilename '${orifilename}.jpg';
              set $thumbnail_root '/usr/local/nginx/html/upfile/thumbnail';
              set $file '${thumbnail_root}/${targetfilename}';

                        if (-f $file) {
                              # rewrite ^/(.*)$ $file last;
                              #  content_by_lua 'ngx.say(true);';
                                content_by_lua 'return  ngx.redirect("/thumbnail/"..ngx.var.targetfilename);';
                        }
                        if (!-f $file) {
                              # rewrite ^/(.*)$ $file last;
                                content_by_lua 'local command="gm convert "..ngx.var.ori_root.."/"..ngx.var.orifilename.."."..ngx.var.imgtype.." -quality 80 +profile *  "..ngx.var.file;
                        os.execute(command);
                      return  ngx.redirect("/thumbnail/"..ngx.var.targetfilename);
--                        ngx.exec("/thumbnail/"..ngx.var.targetfilename);
                                               ';

                        }

                        default_type 'text/html';
         }


 location ~ .*\.(gif|jpg|jpeg|png|bmp)$ {

            expires 48h;#过期时间
            root /usr/local/nginx/html/upfile;#指定图片存放路径
            access_log /usr/local/nginx/logs/access_log.log;#图片路径
            proxy_store on;
            proxy_store_access user:rw group:rw all:rw;
            proxy_temp_path         /usr/local/nginx/html/upfile/tmp;#图片路径
            proxy_redirect          off;
            proxy_set_header        Host 127.0.0.1;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size    10m;
            client_body_buffer_size 1280k;
            proxy_connect_timeout   900;
            proxy_send_timeout      900;
            proxy_read_timeout      900;
            proxy_buffer_size       40k;
            proxy_buffers           40 320k;
            proxy_busy_buffers_size 640k;
            proxy_temp_file_write_size 640k;
 }



        location /upfile {

               content_by_lua_file luaScript/myUpload.lua;
        }


        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }



    }

}

**后续:

  1. 实时转换任何请求的图片
  2. 通过rest请求给图片转化成不同需求的图片
  3. 通过rest请求 转化某个文件夹下的图片**
  1. 卧槽,牛逼。