我想要的是以某种方式将bucket名称传递给aws_s3_bucket和proxy_pass,如果bucket位于不同的区域,则替换aws_key_scope上的region,以便在不运行多个容器(每个容器具有不同的配置)的情况下为多个bucket工作。下面的配置按预期工作,但配置为单个静态bucket。所以要从配置bucket中定义的访问文件,我必须调用
http://IP_or_hostname/file
,我想要的是
http://IP_or_file/
$bucket/文件。
这是基于
https://github.com/anomalizer/ngx_aws_auth
不支持此处提到的变量的模块:
https://github.com/anomalizer/ngx_aws_auth/issues/49
. Nginx有可能吗?
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
client_max_body_size 100G;
aws_access_key 'AKI';
aws_signing_key "xyz";
aws_key_scope "20190226/eu-west-2/s3/aws4_request";
aws_s3_bucket 'bucket_name';
location / {
aws_sign;
aws_access_key "AKI";
aws_signing_key "xyz";
aws_key_scope "20190226/eu-west-2/s3/aws4_request";
aws_endpoint "s3.eu-west-2.amazonaws.com";
proxy_pass http://bucket_name.s3.eu-west-2.amazonaws.com/;
resolver 8.8.8.8 valid=300s;
resolver_timeout 10s;
}
}
}