Nginx作为私有桶的s3代理

前端之家收集整理的这篇文章主要介绍了Nginx作为私有桶的s3代理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

this指南之后,我从this GitHub repo添加了set-misc-Nginx-module.额外模块通过提供AWS密钥和AWS密钥,为存储桶的每个对象构建经过身份验证的S3请求.

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

这是Nginx配置文件

@H_502_15@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 "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;

}

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

@H_502_15@

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

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

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

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

        proxy_hide_header内容类型;

在您的位置指令内

原文链接:https://www.f2er.com/nginx/435338.html

猜你在找的Nginx相关文章