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区块的首行使用,地址的区间需要按照正序方式声明。
- geo $country {
- default US;
- include conf/geo.conf;
- proxy 192.168.1.0/24;
- ##ip list
- 127.0.0.0/24 US;
- 10.1.0.0/16 RU;
- }
- server {
- server_name .exmaple.org;
- $if($country != US) {
- rewrite ^/(.*)$ http://$country.example.org/$! last;
- }
- }
- server {
- server_name us.example.org;
- location / {
- ....
- }
- }
- geo $country {
- rangs;
- default US;
- 127.0.0.0-127.0.0.0 US;##区间表示,以"-"分割
- 127.0.0.1-127.0.0.1 RU;
- }
二、ngx_http_image_fileter_module
图片裁剪辅助模块,此模块需要额外的安装,而且安装过程比较复杂,参见【安装过程】。
1、image_filter
上下文:location
图片处理的方式,语法:
- image_filter off;
- image_filter test;
- image_filter size;
- imagefilter rotate 90 | 180 | 270;
- image_filter resize 【width】 【height】;
- image_filter crop 【width】 【height】;
1)off:此location区块中,关闭此module处理。
2)test:确保响应的图片格式为JPEG、GIF、PNG,否则将返回415错误代码(Unsupported Media Type)。这个参数可以用来检测图片URL是否为“格式良好”的图片。
3)size:响应输出图片的尺寸信息(而不输出图片流),以json格式,如果出错,则返回空JSON。
- { "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格式的图片,是否保留原始图片的透明度。
- server {
- server_name img.example.org;
- location / {
- root www/images;
- image_filter resize $arg_width $arg_height;#请求参数中的width,height
- }
- }
该文转自https://www.iteye.com/blog/shift-alt-ctrl-2229578
白驹过隙,当看到比你优秀的人比你还努力的时候,你也会越来越优秀,相信越努力越幸运!
Nginx学习总结:geo与image模块(四的更多相关文章
- Nginx系列0:Nginx学习历程
Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...
- nginx 学习八 高级数据结构之基数树ngx_radix_tree_t
1 nginx的基数树简单介绍 基数树是一种二叉查找树,它具备二叉查找树的全部长处:检索.插入.删除节点速度快,支持范围查找.支持遍历等. 在nginx中仅geo模块使用了基数树. nginx的基数树 ...
- Nginx学习总结
2017年2月23日, 星期四 Nginx学习总结 Nginx是目前比较主流的HTTP反向代理服务器(其企业版提供了基于TCP层的反向代理插件),对于构建大型分布式web应用,具有举足轻重的作用.简单 ...
- [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...
- Nginx学习总结(一)
Nginx是目前比较主流的HTTP反向代理服务器(其企业版提供了基于TCP层的反向代理插件),对于构建大型分布式web应用,具有举足轻重的作用.简单来说,nginx有2个主要的功能:动/静态资源分离. ...
- Nginx学习回顾总结 部分:
21:46 2015/11/9Nginx学习回顾总结进程间通信,近似于socket通信的的东西:才发现这种通信并不是很难,并不是我想象的那样很多内容,新领域,入门只是几个函数的使用而已.以前猜过是这样 ...
- Nginx学习之二-配置项解析及编程实现
在开发功能灵活的Nginx模块时,需要从配置文件中获取特定的信息.不过,我们并不需要再编写一套读取配置的系统,Nginx已经为用户提供了强大的配置项解析机制,同时还支持“-s reload”命令,可以 ...
- Nginx学习笔记4 源码分析
Nginx学习笔记(四) 源码分析 源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_ ...
- Nginx 学习笔记(二)Web 服务启用 HTTP/2
个人网站提升为HTTP2.0协议,加速访问 一.条件 1.openssl的版本必须在1.0.2e及以上 2.nginx的版本必须在1.9.5以上 二.编译安装 1.openssl 编译安装 (1)开始 ...
- nginx 学习笔记(2) nginx新手入门
这篇手册简单介绍了nginx,并提供了一些可以操作的简单的工作.前提是nginx已经被安装到你的服务器上.如果没有安装,请阅读上篇:nginx 学习笔记(1) nginx安装.这篇手册主要内容:1. ...
随机推荐
- 从Excel粘到Word的图片只有下面一半
把图片粘贴到WORD上为什么只显示最底下一部分? 出现此故障的原因,有可能是设置为固定值的文档行距小于图形的高度,从而导致插入的图形只显示出了一部分.所以要调整图片的段落格式中的行间距. 解决方法 选 ...
- Zabbix通过邮件发送Screen图形报表实现
在使用Zabbix的过程中,我们通常会建立一些需要的Screen图形报表来汇总需要监控的Graph. 而下面的两个脚本,则是通过从Zabbix数据库中获取所有的Screen图形参数,提供Zabbix的 ...
- 【leetcode】394. Decode String
题目如下: 解题思路:这种题目和四则运算,去括号的题目很类似.解法也差不多. 代码如下: class Solution(object): def decodeString(self, s): &quo ...
- TFRecords文件的生成和读取(1)
参考:https://blog.csdn.net/u012222949/article/details/72875281 参考:https://blog.csdn.net/chengshuhao199 ...
- PCA(基础知识)
参考:http://blog.csdn.net/wangjian1204/article/details/50642732 参考:https://www.zhihu.com/question/3831 ...
- CSS中属性百分比的基准点
1.属性百分比的基准点 1.1.基于包含块 以下的关于包含块(含块)的概念,不能简单地理解成是父元素. 如果是静态定位和相对定位,包含块一般就是其父元素.但是对于绝对定位的元素,包含块应该是离它最近的 ...
- python_012
一.内置函数 1.sorted()排序函数 a:语法sorted(Iterable,key = None,reverse = False) Iterable:可迭代对象;key:排序规则(函数) ls ...
- SYSTEM32 下的几乎所有文件的简单说明(原由无忧启动论坛老毛桃出)
SYSTEM32 下的几乎所有文件的简单说明(原由无忧启动论坛http://bbs.wuyou.com老毛桃出): clui.dll .....Security Descriptor Editor,没 ...
- Windows定时任务+bat文件+WinRar处理Mysql数据库的定时自动备份
服务器环境 Windows Server 2003 ,服务器上采用的是IIS+mysql的集成工具phpStudy.MySQL的安装目录D:\phpStudy4IIS , WinRAR 安装目录 C: ...
- windows连接ubuntu服务器方式
如图,打开cmd, 输入 ssh imkow@www.dorian.vip 参数解析: ssh:secure shell的缩写 imknow 是用户名 www.dorian.vip 是域名,没有域名 ...