美文网首页
nginx secure_link_module模块(九)

nginx secure_link_module模块(九)

作者: andpy | 来源:发表于2018-05-25 09:12 被阅读34次

secure_link_module模块

安全链接模块
作用:指定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问;限制链接生效周期。

//语法
Syntax:secure_link expression;
Default:-
Context:http,server,location;

Syntax:secure_link_md5 expression;
Default:-
Context:http,server,location

场景:如下载资源 /download?md5=sdfsdfsd&expires=212221152

  • 客户端发起请求
  • 服务端生成md5加密地下载地址(md5验证,过期校验)
  • 客户端根据地址请求下载
  • 服务端校验地址合法性
  • 客户端开始下载
//示例
server {
    listen 80;
    server_name localhost;
    
    root /opt/app/code;
    location / {
        #取参数名md5,expires的值
        secure_link $arg_md5,$arg_expires;
        #判断参数是否合法,用expires,uri,imooc进行加密,与上面的md5参数进行匹配,返回相应的状态
        secure_link_md5 "$secure_link_expires$uri imooc";
            
        #没有匹配到返回 ""
        if ($secure_link = ""){
            return 402;
        }
        #没有匹配到返回0
        if ($secure_link = "0"){
            return 410;
        }
    }
}

//用shell生成模拟地址,真实环境通过后台代码生成
servername="www.applelife.xyz"
download_file="/download/file.img"
time_num=$(date -d "2018-10-18 00:00:00" +%s)
secret_num="imooc"
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}"

geoip_module模块

基于ip地址匹配MaxMind GeoIP二进制文件,读取Ip所在地域信息。
场景:如果有两台服务器国内,和国外一台,国内用户访问国内服务器,国外用户访问国外服务器,访问不同的资源。

默认是没有编译安装的需要自己安装

//安装
yum install nginx-module-geoip
//查看模块
cd /etc/nginx/modules/

//编辑nginx.conf文件,加载该模块,加入配置
load_module "modules/ngx_http_geoip_module.so";
load_module "modules/ngx_stream_geoip_module.so";

//下载基于MaxMind数据库的文件
//国家
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
//城市
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz

//解压文件 出来之后是 .dat的文件
gunzip GeoLite2-Country.tar.gz GeoLite2-City.tar.gz

#配置示例 ,自己注意路径
geoip_country /etc/nginx/geoip/GeoIp.dat;
geoip_city /etc/nginx/geoip/GeoLiteCity.dat;
...
location / {
    #只允许国内用户访问 
    if ($geoip_country_code !=CN){
        return 403;
    }
    root /usr/share/nginx/html;
    index index.html index.htm;
}

#查看自己的出口地址
location /myip {
    default_type text/plain;
    return 200 "$remote_addr $geoip_country_name $geoip_country_code $geoip_city";  
}

http_geoip_module使用场景

  • 区别国内外 作http访问规则
  • 区别国内城市地域作http访问规则

相关文章

  • nginx secure_link_module模块(九)

    secure_link_module模块 安全链接模块作用:指定并允许检查请求的链接的真实性以及保护资源免遭未经授...

  • [深] nginx secure_link_module模块(2

    获取全套nginx教程,请访问瓦力博客 ngx_http_secure_link_module模块用于检查请求链接...

  • 6.Nginx模块学习方法

    Nginx模块 Nginx模块分为 Nginx官方模块 和 第三方模块 , 这里我们拿Nginx官方模块来介绍一下...

  • Nginx核心模块以及指令介绍

    Nginx模块概览 Nginx核心模块以及指令介绍 注意:Nginx的核心模块包含主模块和事件模块,即上图的cor...

  • 应用运维面试核心

    面试题 Nginx模块 你以前用过哪些Nginx模块? upstream 是Nginx负载均衡模块 image ...

  • nginx内核原理

    Nginx的模块 Nginx由内核和模块组成。 Nginx的模块从结构上分为核心模块、基础模块和第三方模块: 核心...

  • nginx 源代码分析 (二)

    1. nginx模块 nginx的功能分布在nginx模块中,一个模块为一个功能单元。每个nginx模块都专注于自...

  • nginx 动态添加模块

    需要用到nginx的tcp模块,以前安装的nginx没有这个模块。 ./nginx -V 可以看到所有包含的模块(...

  • 8.nginx模块介绍

    nginx的模块 1.编译进nginx的模块2.提供那些配置3.模块合适被使用4.提供那些变量 查找nginx模块...

  • nginx 2

    1 nginx 常用模块整理 nginx 常用模块整理1 http核心模块 ngx_http_core_modu...

网友评论

      本文标题:nginx secure_link_module模块(九)

      本文链接:https://www.haomeiwen.com/subject/uqkyjftx.html