Nginx http_secure_link模块使用

什么是http_secure_link模块?
secure_link机制简单来说就是来保护你的http资源被受控访问的,类似于防盗链、http授权访问的Token。假如你有一些私有化的、需验证身份才能访问的资源,就可以使用这个机制。
下面是一个简单的流程,分为两步
- 请求授权:携带目标uri,在后端鉴权通过后计算签名。
- 签名的规则通常是
uri+secret+expire
来生成
- 签名的规则通常是
- 携签名访问资源: 携带
url?sign=xxxx&expire=1731313131
来访问- 参数说明:
- sign携带API返回的签名
- expire 过期时间戳
- 参数说明:
下面是简单的流程图
核心代码
代码涉及两个部分,一个是nginx网关部分。另一部分则为核心的API。
API
代码使用Go语言,出入参非常简单。
注意:sign在全链路下是无状态的,也就是泄漏后依然会有风险,推荐expire时间设置为分钟级,过期后拒绝请求可再签来实现安全性。
1 | package service |
Nginx
nginx无需任何插件即可实现该功能,而且http_secure_link
是nginx的worker
内特性。还是无状态check,所以不存在太多的性能问题,不会拖慢nginx的响应速度。
secret
必须与GenerateSignature
函数中的secret参数完全一致,否则无法过签名
1 | worker_processes 1; |
总结
该场景下可以实现部分api、static、html的保护访问,可以做到http访问保护。但是一定要注意时间问题,尽量保证泄露的风险最小。
本例如有demo、技术支持需求,欢迎在下面评论~
参考文章
评论
评论插件加载失败
正在加载评论插件