zoukankan      html  css  js  c++  java
  • Nginx学习总结:geo与image模块(四

    斜体下划线,表示建议采用默认配置,无需显式的配置

    一、ngx_http_geo_module

        核心特性为:根据客户端IP(段),geo模块将会匹配出指定的变量(比如,国家代码,城市代码)。geo模块可以帮助我们实现如下场景:

        1)简易的CDN网络

        2)多机房部署,站点分流。

        3)limit非法IP(段)的访问,或者限流。

        1、geo 【$address】$variable {...}

            上下文:http

        其中“address”变量是可选的,如果不指定,默认为“$remote_addr”;使用“address”变量值作为客户端IP,参与geo匹配,将匹配的值作为$variable。如果“address”变量不是一个合法的IP地址,那么将使用“255.255.255.255”作为可选值。geo模块中可以使用如下参数:

        1)delete:删除指定的网络。

        2)default:如果客户端IP没有在geo ip列表中匹配到任何信息,那么将使用default指定的值,作为$variable的值。如果没有使用default配置项,且匹配失败时,最终$variable的值为空。

        3)include:指定geo ip列表的外部文件。此文件中声明方式与在geo区块中一样,每行一个“ip”对应一个参数值。

        4)proxy:定义那些可信(trusted)的地址(通常是集群中其他nginx的地址),来自trusted地址的请求,将会使用header中“X-Forwarded-For”字段值,来匹配geo。proxy配置项将会按照声明的顺序检测。 

        5)ranges:表明地址使用区间方式定义,此参数需要在geo区块的首行使用,地址的区间需要按照正序方式声明。

    Java代码  收藏代码
    1. geo $country {  
    2.     default    US;  
    3.     include    conf/geo.conf;  
    4.     proxy      192.168.1.0/24;  
    5.     ##ip list  
    6.     127.0.0.0/24    US;  
    7.     10.1.0.0/16      RU;  
    8. }  
    9. server {  
    10.     server_name .exmaple.org;  
    11.     $if($country != US) {  
    12.         rewrite ^/(.*)$ http://$country.example.org/$! last;  
    13.     }  
    14. }  
    15. server {  
    16.     server_name us.example.org;  
    17.     location / {  
    18.         ....  
    19.     }  
    20. }  
    Java代码  收藏代码
    1. geo $country {  
    2.     rangs;  
    3.     default    US;  
    4.     127.0.0.0-127.0.0.0    US;##区间表示,以"-"分割  
    5.     127.0.0.1-127.0.0.1    RU;  
    6. }  

    二、ngx_http_image_fileter_module

        图片裁剪辅助模块,此模块需要额外的安装,而且安装过程比较复杂,参见【安装过程】。

        1、image_filter

            上下文:location

        图片处理的方式,语法:

        

    Java代码  收藏代码
    1. image_filter off;  
    2. image_filter test;  
    3. image_filter size;  
    4. imagefilter rotate 90 | 180 | 270;  
    5. image_filter resize 【width】 【height】;  
    6. image_filter crop 【width】 【height】;  

        1)off:此location区块中,关闭此module处理。

        2)test:确保响应的图片格式为JPEG、GIF、PNG,否则将返回415错误代码(Unsupported Media Type)。这个参数可以用来检测图片URL是否为“格式良好”的图片。

        3)size:响应输出图片的尺寸信息(而不输出图片流),以json格式,如果出错,则返回空JSON。

    Java代码  收藏代码
    1. "img" : { "width": 100, "height": 100, "type": "gif" } }  

        4)rotate 90 | 180 | 270:逆时针旋转图片指定的角度。可选值为“90”、“180”、“270”,这个指令可以单独使用,也可以与“resize”、“crop”一起使用。

        5)resize 【width】【height】:按比例压缩图片的尺寸;如果只希望按照一个维度压缩,另一个维度可以用“_”表示。如果出错,将返回415错误代码。当此参数与rotate一起使用时,那么压缩后太会rotate。resize即为我们常说的“等比压缩”,最终压缩后的图片长、宽都不会超过参数指定的值。

        6)crop 【width】 【height】:裁剪,先按照图片较长的边等比压缩(同resize),然后再使用那个较短的边进行裁剪。如果此有rotate配置,那么先rotate然后再crop。

        图片resize、crop时,会抛出415错误,原因排查方式:nginx是否有访问此文件的权限(如果没有,不会抛出403,而是直接415),系统是否安装了相关的Media类型处理lib,图片的大小是否超过了“image_filter_buffer”的大小。

        2、image_filter_buffer 【size】

            默认值为“1M”;设置读取图片时所需要的最大内存空间,如果图片大小超过此值,则返回415错误。

        3、image_filter_jpeg_quality 【quality】

            默认值为“75”;jpeg格式的图片压缩质量。质量越低,所传输的数据大小越小;推荐的最大值为95。

        4、image_filter_sharpen 【percent】

            默认值为“0”;增加图片的锐度。“0”表示关闭锐度。

        5、image_filter_transparency 【on | off】

            默认值为“on”;对于PNG、GIF格式的图片,是否保留原始图片的透明度。

    Java代码  收藏代码
    1. server {  
    2.     server_name img.example.org;  
    3.     location / {  
    4.         root www/images;  
    5.         image_filter resize $arg_width $arg_height;#请求参数中的width,height  
    6.     }  
    7. }  

    该文转自https://www.iteye.com/blog/shift-alt-ctrl-2229578

    白驹过隙,当看到比你优秀的人比你还努力的时候,你也会越来越优秀,相信越努力越幸运!

  • 相关阅读:
    day03 bs4解析库
    day02—selenium库
    day01爬虫三部曲
    IIC SPI UART通信方式的区别
    五大类程序设计模式
    套接字编程基础
    主机字节序和网络字节序转换
    位运算
    ARM体系结构的特点
    static关键字的作用
  • 原文地址:https://www.cnblogs.com/knownfreestyle/p/11433723.html
Copyright © 2011-2022 走看看