使用nginx代理S3请求进行授权

我正在尝试从EC2机器上仅使用curl访问私有S3。因此,我正在尝试使用nginx和lua创建代理服务器,该服务器将调用元数据API并获取授权令牌并在proxy_pass中设置标头。

 location  /download/ {
      set $date  '';
      set $token  '';
      set $authorization '';

      content_by_lua_block {

        % 一些代码 %

        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 之外检查 date 变量时,其值未设置。有人可以帮我解决这个问题吗。

PS:我尝试过使用桶策略和VPC端点的其他方法,但由于某些限制,它们对我不起作用。

点赞
用户2060502
用户2060502

content_by_lua_blockproxy_pass 指令都在内容处理阶段进行处理。Nginx 只会调用其中一个指令。

您可以使用 access_by_lua_blockset_by_lua_block

2018-10-18 13:47:24