Nginx高级之高级模块(secure_link/secure_link_md5/geoip_module)

高级阶段回顾:

Nginx高级之Rewrite规则

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, 结果如下:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值