高级阶段回顾:
secure_link/secure_link_md5模块
制定并允许检查请求的链接的真实性以保护资源免遭未授权的访问 / 限制链接生效的周期
安全模块应用场景模型
模块配置语法
systax: secure_link [表达式]
default: 无配置
context: http域/server域/location域
md5加密:
systax: secure_link_md5 [表达式]
default: 无配置
context: http域/server域/location域
下面做一个小测试
① 进入default.conf配置:
② 在其他目录下建立一个.sh文件, 内容如下(根据自己环境情况进行相应修改即可):
servername="192.168.19.136"
download_file="/download/testMD5.img"
time_num=$(date -d "2019-11-26 00:00:00" +%s)
secret_num="Milky-Way"
res=$(echo -n "${time_num}${download_file} ${secret_num}"|openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =)
echo "http://${servername}${download_file}?md5=${res}&expires=${time_num}"
③ 这个生成密钥的方式一般由后台生成, 这里采用自己写的这个.sh文件来生成密钥, 命令: sh [.sh文件的名称], 我这里是sh md5url.sh
生成的密钥: http://192.168.19.136/download/testMD5.img?md5=6sL9aEi50TlupLSLtX7jcA&expires=1574697600
④ 根据这个密钥来访问服务器
结果如下:
geoip模块
基于maxmind geoip的二进制文件, 读取ip所在地信息
需要安装geoip源: yum install nginx-module-geoip
查看是否安装完成:
使用场景
① 区别国内外的ip
② 区别城市间的ip
配置
安装yum源后, 进入nginx.conf, 手动引入geoip模块:
在配置default.conf之前需要先下载ip地域的文件, 利用.sh文件来下载, 在任意地方新建一个.sh文件, 内容如下:
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
在目录下会生成2个.gz的文件, 我把它们拷贝至/etc/nginx/geoip目录下解压生成2个.dat文件
接下来进入default.conf配置: 在http域引入上面生成的2个.dat文件
在代理的情况下($geoip_country_code不为CN)访问nginx, 结果如下:
在无代理的情况下用本地ip($geoip_country_code为CN)访问nginx, 结果如下: