我正在尝试从EC2计算机访问私有S3,但仅使用curl。 因此,我尝试使用nginx和lua创建一个代理服务器,该服务器将调用元数据api并获取授权令牌并在proxy_pass中设置标头。
location /download/ {
set $date '';
set $token '';
set $authorization '';
content_by_lua_block {
% some code %
ngx.var.date = date;
ngx.var.token = awsToken;
ngx.var.authorization = authorization;
}
proxy_set_header Date $date;
proxy_set_header X-AMZ-Security-Token $token;
proxy_set_header Authorization $authorization;
proxy_pass "https://nisingla-ethos.s3.amazonaws.com/";
}
但是,当我在content_by_lua_block之外检查日期变量时,未设置其值。 有人可以帮我解决这个问题。
PS:我尝试了使用存储桶策略和vpc终结点的其他方法,但是由于某些限制,它们对我不起作用。
答案 0 :(得分:0)
content_by_lua_block
和proxy_pass
均在内容阶段进行处理。
Nginx只会调用一个这样的指令。
您可以使用access_by_lua_block
或set_by_lua_block
。