`
haoningabc
  • 浏览: 1482824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx HttpSecureLinkModule 过期token验证模块

阅读更多

用途,确认一个链接比如下载pdf,在一定有效期内有用
可以加个用户的权限验证,随便用个密钥和路径和时间戳,生成url串,如果不是在指定时间内访问,则可以自定义错误编码402,407等任意
1.nginx编译的时候需要./configure --prefix=/usr/local/nginx --with-http_secure_link_module
2.确定nginx要保护的目录,配置在nginx.conf中
3.用php可以生成可用链接,先用fastcgi把php跑起来
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid

随便建立个文件pdf文件
[root@haoning html]# tree
.
├── 50x.html
├── index.html
├── index.php
├── p
│   └── files
│       └── top_secret.pdf
└── test.php

2 directories, 5 files
[root@haoning html]# pwd
/usr/local/nginx/html
[root@haoning html]#


php代码
[root@haoning sbin]# cat ../html/test.php 
<?php
$secret = 'segredo'; // To make the hash more difficult to reproduce.
$path   = '/p/files/top_secret.pdf'; // This is the file to send to the user.
$expire = time()+100; // At which point in time the file should expire. time() + x; would be the usual usage.
echo $expire;
echo "</br>";
echo time(); 
echo "</br>";
$md5 = base64_encode(md5($secret . $path . $expire, true)); // Using binary hashing.
$md5 = strtr($md5, '+/', '-_'); // + and / are considered special characters in URLs, see the wikipedia page linked in references.
$md5 = str_replace('=', '', $md5); // When used in query parameters the base64 padding character is considered special.
echo $md5;
echo "</br>";
echo "http://210.56.194.39/p/files/top_secret.pdf?st=$md5&e=$expire";
echo "</br>";
echo "<a href=\"http://210.56.194.39/p/files/top_secret.pdf?st=$md5&e=$expire\">http://210.56.194.39/p/files/top_secret.pdf?st=$md5&e=$expire</a>"
?>


nginx.conf
[root@haoning conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
		location /p/ {
				secure_link $arg_st,$arg_e;
				secure_link_md5 segredo$uri$arg_e;
				if ($secure_link = "") {
						return 402;
				}
				if ($secure_link = "0") {
						return 405;
				}
		}
		location ~ \.php$ {   
            fastcgi_pass 127.0.0.1:9000;  
            fastcgi_index index.php;  
            set $path_info "/";  
            set $real_script_name $fastcgi_script_name;  
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1;  
                set $path_info $2;  
            }   
        }   
	fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;  
        fastcgi_param script_name $real_script_name;  
        fastcgi_param path_info $path_info;  
        include /usr/local/nginx/conf/fastcgi_params; 
    }
}
[root@haoning conf]# 


官方链接
http://wiki.nginx.org/HttpSecureLinkModule

后续还要结合
https://github.com/netdna/ngx_secure_token
  • 大小: 41.2 KB
分享到:
评论

相关推荐

    nginx+lua+redis实现token验证

    本文将深入探讨如何利用`nginx+lua+redis`来实现`token`验证,以确保只有经过授权的用户才能访问受保护的资源。 首先,让我们理解`token`验证的基本原理。`token`验证是一种身份验证机制,它允许客户端通过提供一个...

    Nginx令牌模块nginx-token.zip

    nginx-token 是一个基于 memcached 的 Nginx 令牌模块。 示例配置: server { listen 80; root /var/www; location / { token on; token_server 127.0.0.1:11211; token_len 12; token_key token...

    C#WEB用户令牌TOKEN验证防止HTTPGETPOST等提交

    - 服务器接收到请求后,验证令牌的有效性,包括检查签名、过期时间等。 - 如果验证通过,服务器处理请求;否则,返回错误信息。 5. **Nginx配置令牌验证**: - 在Nginx配置中,可以设置HTTP头检查,确保每个请求...

    nginx带nginx-http-flv模块windows编译版rtmp

    Nginx-RTMP是Nginx的一个扩展模块,由Adobe Systems开发,用于支持Real-Time Messaging Protocol (RTMP)。RTMP是一种协议,常用于在线流媒体传输,如视频直播服务。Nginx-RTMP模块允许Nginx接收来自Flash Player或...

    第一个Nginx模块的例子

    标题中的“第一个Nginx模块的例子”意味着我们将探讨如何创建一个自定义的Nginx模块。Nginx是一个高性能的Web服务器和反向代理服务器,它以其轻量级、高并发处理能力而闻名。开发自定义模块可以让用户扩展Nginx的...

    SpringBoot集成FastDFS+Nginx整合基于Token的防盗链的方法

    SpringBoot负责生成Token和验证Token,而FastDFS负责文件存储,Nginx负责文件下载和缓存。 7. Token生成和验证:Token生成和验证是基于Token防盗链机制的关键步骤。Token生成通常使用UUID或其他唯一标识符,而验证...

    nginx的memcache模块

    **Nginx的Memcache模块**是Web服务器Nginx的一个扩展,用于缓存动态内容,提高网站性能。Memcache是一种高性能的分布式内存对象缓存系统,它可以在内存中存储各种格式的数据,如字符串、整型、二进制对象等,以减少...

    带nginx-rtmp-module模块的Nginx

    【标题】: "带nginx-rtmp-module模块的Nginx" 在当今互联网技术日新月异的时代,实时流媒体传输已经成为在线视频分享、直播、远程教育等应用场景不可或缺的一部分。Nginx,作为一款高性能的HTTP和反向代理服务器,...

    补充:Nginx之模块处理流程

    Nginx是一个高性能的Web服务器和反向代理服务器,其内部设计采用了模块化的架构,这使得Nginx具有高度灵活性和可扩展性。模块化设计是Nginx的核心特点,它将复杂的系统分解为几个独立的功能组件,每个组件专注于一个...

    nginx-upload-module模块源码

    nginx-upload-module模块源码,用于nginx配置文件上传功能

    Windows上nginx-openresty添加rtmp模块

    网上查找nginx-openresty添加rtmp模块的方法基本都是在Linux上的。但由于项目需要在Windows上使用nginx,无奈只好自己去找资料,在Windows上编译nginx-openresty同时加入rtmp模块。本资源是Windows上生成好的...

    win版本带nginx-rtmp模块

    双击nginx.exe # 简要说明 conf/nginx.conf 为配置文件实例 RTMP监听 1935 端口,启用live 和hls 两个application HTTP监听 8080 端口, * :8080/stat 查看stream状态 * :8080/index.html 为一个直播播放与直播...

    深入理解Nginx模块开发及架构解析

    深入理解Nginx模块开发及架构解析,深入理解Nginx模块开发及架构解析

    windows版本nginx1.7 + rtmp模块

    **Nginx 1.7 + RTMP 模块详解** 在数字媒体和直播领域,Nginx 结合 RTMP 模块是一个广泛使用的解决方案,它允许用户在 Windows 平台上搭建一个高效的流媒体服务器。Nginx 是一款高性能的 HTTP 和反向代理服务器,而...

    nginx-auth-ldap:用于 nginx 的 LDAP 身份验证模块

    用于 nginx 的 LDAP 身份验证模块nginx的LDAP模块,支持针对多个LDAP服务器的身份验证。如何安装FreeBSD cd /usr/ports/www/nginx && make config install clean 检查 HTTP_AUTH_LDAP 选项 [*] ...

    nginx-upload-progress模块源码

    **Nginx Upload Progress 模块详解** Nginx 是一款高性能、轻量级的 Web 服务器/反向代理服务器,被广泛应用于互联网服务。它以其稳定性和高并发能力受到赞誉。在处理大文件上传时,为了提供更好的用户体验,开发者...

    Linux 离线 安装Nginx必要环境, 包含openssl模块

    在Linux环境中,离线安装Nginx及其依赖项,特别是openssl模块,是一项常见的任务,尤其在没有互联网连接或者网络受限的服务器上。本教程将详细解释如何进行这一操作。 首先,你需要确保你的Linux系统是基于RPM(Red...

    添加nginx-http-flv-module模块并重新编译后的nginx(windows版)

    现在我们将深入探讨这一主题,了解如何添加此模块以及Nginx重新编译的过程。 首先,`nginx-http-flv-module`是一个扩展模块,它扩展了Nginx的基本功能,使其能够处理FLV和HLS视频流。这对于在线视频服务提供商来说...

    nginx安装和整合rtmp模块

    在本教程中,我们将探讨如何在您的系统上安装Nginx,并整合**RTMP (Real-Time Messaging Protocol)** 模块,以便支持流媒体服务。 首先,我们需要准备以下组件: 1. **openssl-OpenSSL_1_0_1i.tar.gz**: 这是...

Global site tag (gtag.js) - Google Analytics