secure_link_module安全连接模块:
对于访问限制及防盗链等的功能,如之前的防盗链是基于http_refer来实现,但是该请求头是可以在客户端被改写的,功能相对比较简单但是不完善。而安全链接模块可以帮助我们实现比较高级精度的验证。它利用的是后端加密的机制返还给前端,这样来实现类似于数字加密的认证方式。总结以下两个主要功能:
- 制定并允许检查请求的链接的真实性及保护资源免遭未经授权的访问。
- 限制连接生效周期。
其配置语法如下:
Syntax: | secure_link expression; |
Default: | — |
Context: | http, server, location |
Syntax: | secure_link_md5 expression; |
Default: | — |
Context: | http, server, location |
secure_link_module验证机制如下图所示:
先客户端点击下载按钮,向服务端发起资源请求的操作,服务端生成下载地址,该下载地址是生成了一串秘钥,是有相应的信息以及过期时间的加密。链接地址如下图示。包含有MD5加密的信息及过期时间。服务端对该md5及过期时间进行效验。通过后将下载资源返还给客户端。反之,返回相应的错误码。
加密验证可以通过自己制定的规则去加密。
配置示例:
Secure_link后的表达式是对应加密验证的MD5参数以及过期效验的参数取值,取这两个值匹配该链接是否是合法链接。
具体可参考官网:http://nginx.org/en/docs/http/ngx_http_secure_link_module.html
GEOIP_MODULE模块:
该模块是对ip地址进行地域信息的读取,它是基于ip地址匹配MaxMind GeoIp二进制文件,读取ip所在地域信息。
使用场景:
- 区别国内外做http访问规则
- 区别国内城市地域做http访问规则
安装:
由于该模块并不是默认的模块,需要自行安装,可以通过yum -y install nginx_module_geoip来安装。或者重新安装时,加带--with-http_geoip_module来实现模块安装。
通过yum安装需要在配置文件中加载配置该模块:
load_module “modules/ngx_http_geoip_module.so”
load_module “modules/ngx_stream_geoip_module.so”
由于geoip是基于MaxMind提供的数据库文件来读取地域信息,需要下载以下两个文件:
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
下载完文件后,需要执行gunzip命令解压这些文件。
需要先配置如下内容:
Syntax: | geoip_country file; |
Default: | — |
Context: | http |
Syntax: | geoip_city file; |
Default: | — |
Context: | http |
配置示例: