nginx添加图片压缩和echo调试模块

1、首先下载nginx
2、然后下载需要安装的模块
3、指定安装路径 --prefix
4、指定安装需要添加的模块
5、编译安装 make && make install

./configure --prefix=/usr/local/nginx --with-http_image_filter_module --add-module=/usr/local/nginx/echo-nginx-module-0.58

/usr/local/nginx/echo-nginx-module-0.58这个代表我下载的nginx的调试模块 echo在我电脑上的位置

url中包含图片格式的指向

location ~* .*\.(jpg|gif|png|image|jpeg|tiff|raw|bmp) {

缩略图配置:

location ~* .*\.(jpg|gif|png|image|jpeg|tiff|raw|bmp) {
         image_filter resize $arg_width $arg_height;
        image_filter_jpeg_quality 85;
        image_filter_buffer 50M;
        image_filter_interlace on;
     proxy_pass http://ip:port;
    }

注意:这里的缓存大小一定要设置,不然图片过大,就不会压缩,报http 415 media type error 这个是在后来的测试中发现的
思路:
之前的思路:
URL中包含 width 和 height时,就进行缩略,但是在nginx中的location中进行配置时,location貌似只能对url中的参数之前的进行定位,比如:http://ip:port/abc?a=1&b=2
只能对http://ip:port/abc 这部分进行location定位,不能对后面的参数进行定位:a=1和b=2不能反映在location中。所以我通过location去匹配带有width 和 height的参数进行压缩的思路不可靠

思路二:(需要后期再进行实践)
通过在url中添加/resize,然后location以后再对URL进行rewrite,这样应该也可以,但是对url中提取resize后面的部分不是很熟悉,所以暂时没有用,比如url为:
http:ip:port/resize/xxxxxxxxx?a=1&b=2,通过识别resize代表需要对url进行重写的,会指定到对应location中,然后把/resize/xxxxxxx?a=1&b=2重写为: /xxxxxxx?a=1&b=2
然后进行代理即可

思路三:(偷懒方式,通过不同域名指定是否缩略)
就是直接通过域名进行区分:
比如我原文件走域名: file-sit.xxxxx
我压缩以后的域名走: compression-sit.xxxxx 这个域名一定包含参数 &width=x&height=y
这样可以把缩略图直接放在不同的server中:
如下:

server {
        listen       80;
        server_name     compression-sit.xxxxxx
        access_log      logs/image_access.log main;

    location ~* .*\.(jpg|gif|png|image|jpeg|tiff|raw|bmp) {

     image_filter resize $arg_width $arg_height;
     image_filter_jpeg_quality 75;
     proxy_pass http://xx:xx;
    }

 }

另外一个server配置,一个ip可以指定多个域名即可

server {
        listen       80;
        server_name     file-sit.xxxxxxxx;
        access_log      logs/image_access.log main;


     location / {
      proxy_pass http://xxxxx:yyyy;
     }


 }

中间遇到的一些坑:

日志格式定义在http模块中,但是reload nginx总是提示 日志格式没有定义,
所以日志格式应该定义在最上方:最好在使用之上,比如在include之上:

nginx添加图片压缩和echo调试模块_第1张图片
Paste_Image.png

另外在默认的server中一定要定义:

nginx添加图片压缩和echo调试模块_第2张图片
Paste_Image.png

上面两处的意义是:其他所有的server 配置了域名就可以走,如果没有配置域名直接用IP,就直接返回错误,防止被攻击

你可能感兴趣的:(nginx添加图片压缩和echo调试模块)