Amazon S3でホストされている大きなダウンロードファイル(5 GB以上のものもあります)があります。私のメインサーバーはNginxです。 Amazon S3には公開アクセス権がありません。ファイルは署名されたURLで提供されます。Amazon S3を使用してNginxで帯域幅を制限する
Amazon S3を使用する際に帯域幅を制限する方法はありますか? Amazon S3にはオプションはありませんが、Nginxをプロキシとして使用してそこから作ることはできますか?
私はそのリンクからの例を使用しようとしています:
https://coderwall.com/p/rlguog/nginx-as-proxy-for-amazon-s3-public-private-files
このコードブロック:
location ~* ^/proxy_private_file/(.*) {
set $s3_bucket 'your_bucket.s3.amazonaws.com';
set $aws_access_key 'AWSAccessKeyId=YOUR_ONLY_ACCESS_KEY';
set $url_expires 'Expires=$arg_e';
set $url_signature 'Signature=$arg_st';
set $url_full '$1$aws_access_key&$url_expires&$url_signature';
proxy_http_version 1.1;
proxy_set_header Host $s3_bucket;
proxy_set_header Authorization '';
proxy_hide_header x-amz-id-2;
proxy_hide_header x-amz-request-id;
proxy_hide_header Set-Cookie;
proxy_ignore_headers "Set-Cookie";
proxy_buffering off;
proxy_intercept_errors on;
resolver 172.16.0.23 valid=300s;
resolver_timeout 10s;
proxy_pass http://$s3_bucket$url_full;
}
を何私は理解していないことはどのようにすることができていますPHPから作成した署名付きURLをそのNginx Configに渡しますか?だから、私はプロキシとして署名されたURLに行くようにNginxに伝えることができます。
それ* - HTTP([ 'proxy_limit_rate']で://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_limit_rate)、おそらく?それは本当に "帯域幅"を制限したいのですか、それともクライアントごとに1秒あたりの要求ですか? –
私の問題は、私はAmazon S3用の署名付きURLを作成するためのプラグインを使用しています。このプラグインは、PHPのようなものを使用して、Signed URLにユーザをリダイレクトします:** header( 'Location:'。$ signedURL); ** Nginxはこのシナリオでどこに置くことができますか? – user1002601
@ Michael-sqlbot私はサーバーにはあまりよくないので、私に同行してください。ユーザーリクエスト** example.com/files/file1.txt ** PHPは、署名されたURLを生成します。 ** amazon/bucket/file1.txt **と同様に、PHPのヘッダーを提供しました。私は** amazon/bucket/file.txt ** URLをNginx confに入れてプロキシリクエストを行う必要があります。どうやってやるの? – user1002601