加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

Nginx作为私有桶的s3代理

发布时间:2020-12-13 21:15:51 所属栏目:Nginx 来源:网络整理
导读:我正在尝试将Nginx设置为S3上托管的静态html / js webapp的代理. 我阅读了很多教程和帖子,如果我的存储桶设置为公共,我可以使它工作. 我需要Nginx作为代理的原因是我不希望我的存储桶被公开. 在this指南之后,我从this GitHub repo添加了set-misc-nginx-modul

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

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

在this指南之后,我从this GitHub repo添加了set-misc-nginx-module.额外模块通过提供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_methodnnnnx-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 "AWS $aws_access:$aws_signature";
    proxy_buffering        off;
    proxy_intercept_errors on;
    rewrite .* /$url_full break;
    proxy_pass             http://s3.amazonaws.com;
}

auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;

}

如果我尝试访问我的网站,这就是结果

**编辑:** index.html确实将内容类型设置为text / html.

可能我在Nginx配置中遗漏了一些东西.

如果我将整个存储桶设置为公共存储并且使用“简单”代理方法,则一切正常.

最佳答案
您很可能已经解决了这个问题,但您可以尝试添加

????????proxy_hide_header内容类型;

在您的位置指令内

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读