Nginx+Lua+s3文件上传
2021-6-8 18:52:22
收藏:0
阅读:204
评论:0
我正在尝试使用nginx和Lua将文件上传到s3存储桶,在此过程中我有一个sha256函数,该函数在nginx.conf之外的其他文件中当我尝试访问该函数时,我会得到以下错误。[输入图像说明文字][1]请解释一下?
'''2021/06/08 23:21:04 [error] 10480#0: *1 failed to run set_by_lua*: set_by_lua:1: attempt to index global 'sha256' (a nil value)'''
下面是我的nginx.conf
set_by_lua $date "return ngx.http_time(ngx.time())";
set_sha1 $datesha $date;
set $upload_id $prefixsha$datesha;
set $key $entity/$property/$upload_id/original/$filename;
set $bucket "raviuploadbucket";
#set $url http://$bucket.s3.us-east-2.amazonaws.com/$key;
set $url http://raviuploadbucket.s3.us-east-2.amazonaws.com/upload;
set $aws_access_key "AAAAAAAAAAAAAAAAAA";
set $aws_secret_key "XXXXXXXXXXXXXXXXXXXX";
set $acl public-read;
set $canonicalized_amz_headers "x-amz-acl:$acl\nx-amz-date:$date";
set $canonicalized_resource "/$bucket/$key";
set $string_to_sign "$request_method\n$http_content_md5\n$http_content_type\n\n$canonicalized_amz_headers\n$canonicalized_resource";
set $digest "sha256.hmac_sha256($aws_secret_key,$string_to_sign)";
set $aws_region us-east-2;
set $aws_role iam;
set $aws_req aws4_request;
#local k_date = sha256.hmac_sha256('AWS4' .. $aws_secret_key, $date);
#ngx.req.set_header('k_date', sha256.hmac_sha256('AWS4' .. $aws_secret_key, $date));
set_by_lua $k_date "return sha256.hmac_sha256('AWS4' .."XXXXXXXXXXXXXXXXXXXX", "20210608")";
set_by_lua $k_region "return sha256.hmac_sha256($k_date, "us-east-2")";
set_by_lua $k_service "return sha256.hmac_sha256($k_region, "iam")";
set_by_lua $k_signing "return sha256.hmac_sha256($k_service, "aws4_request")";
set_by_lua $signature "return sha256.hmac_sha256($k_signing, $string_to_sign))";
set $aws_signature ngx.encode_base64($digest);
#proxy_set_header Authorization "AWS $aws_access_key:$aws_signature";
proxy_set_header Authorization "$signature";
proxy_set_header x-amz-acl $acl;
proxy_set_header Date $date;
#proxy_set_header x-amz-date: 1622471175;
proxy_hide_header x-amz-id-2;
proxy_hide_header x-amz-request-id;
add_header X-File-URL $url;
#ngx.log(proxy_set_header)
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
resolver 8.8.8.8 valid=300s;
resolver_timeout 10s;
#proxy_set_header X-Forwarded-For $
proxy_pass $url;
}
}
}'''
**"下面的图片是支持AWS V4 sha256的sha256.lua文件,该文件在nginx文件夹中"**我正在尝试在nginx.conf文件中调用下面的函数创建aws签名不确定我做错了什么,任何指针都将非常赞赏。
[1]: https://i.stack.imgur.com/6UixV.png
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
