使用Nginx发起S3身份验证请求

时间:2018-09-03 04:46:18

标签: nginx amazon-s3 lua openresty

我正在尝试从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终结点的其他方法,但是由于某些限制,它们对我不起作用。

1 个答案:

答案 0 :(得分:0)

content_by_lua_blockproxy_pass均在内容阶段进行处理。 Nginx只会调用一个这样的指令。

您可以使用access_by_lua_blockset_by_lua_block

相关问题