小编ema*_*mas的帖子

Nginx 作为具有私有存储桶的 s3 代理

我正在尝试将 Nginx 设置为托管在 S3 上的静态 html/js webapp 的代理。我阅读了很多教程和帖子,如果我的存储桶设置为公开,我可以让它工作。

我需要 Nginx 作为代理的原因是我不希望我的存储桶是公开的。

指南中,我加入了设置MISC-nginx的模块从这个GitHub 存储库中。额外的模块通过提供 AWS 密钥和 AWS 秘密,为存储桶的每个对象构建经过身份验证的 S3 请求。

我重新编译了 Nginx 并设法允许它访问受保护的存储桶。问题是我无法呈现 html,并且基本上我正在使用我试图代理的存储桶的 xml 内容。

这是Nginx的配置文件

server {
    listen 80;
    server_name [MY_DNS];

location * {
    set $bucket           '[MY_BUCKET]';
    set $aws_access       '[MY_AWS_KEY]';
    set $aws_secret       '[MY_AWS_SECRET]';
    set $url_full         "$1";
    set_by_lua $now       "return ngx.cookie_time(ngx.time())";
    set $string_to_sign   "$request_method\n\n\n\nx-amz-date:${now}\n/$bucket/$url_full";
    set_hmac_sha1          $aws_signature $aws_secret $string_to_sign;
    set_encode_base64      $aws_signature $aws_signature;
    resolver               172.31.0.2 valid=300s;
    resolver_timeout       10s;
    proxy_http_version     1.1;
    proxy_set_header       Host $bucket.s3.amazonaws.com;
    proxy_set_header       x-amz-date $now;
    proxy_set_header       Authorization …
Run Code Online (Sandbox Code Playgroud)

nginx proxy amazon-s3

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

amazon-s3 ×1

nginx ×1

proxy ×1