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

版权声明:原创文章, 欢迎转载. https://blog.csdn.net/ip_JL/article/details/84480815

高级阶段回顾:

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

猜你喜欢

转载自blog.csdn.net/ip_JL/article/details/84480815
今日推荐