特定のニーズに少し依存しますが、ここでの最も簡単な解決策は、キャッシング付きのリバース プロキシを使用することだと思います。
これはもちろん、Amazon にメインDG
ファイルがあり、サーバーを非永続ストレージと見なしている場合にのみ適用されます。
Nginx はここでは非常にシンプルで、おそらく十分に強力です。だから私はあなたの状況で試してみます:
(誰かがファイルにアクセスしていると仮定http://satic.your-site.com/image/example.jpg
)
DG
サーバー上のNginxによって処理される「静的」リクエスト
- Nginxは、コンテンツがキャッシュにあるかどうかを確認します
- はいの場合、応答は nginx キャッシュから直接配信されます
- いいえの場合、Nginx は上流のサーバーから応答を読み込みます
これには多くの利点があり、非常に柔軟です。たとえば、多くの変更を行い、キャッシュを無効にしたい場合は、対応するディレクトリを空にするだけです (おそらくサーバーを HUP します)。
簡単なnginx構成の例:
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=yoursite_cache:256m max_size=5G;
upstream yoursite_upstream {
server your-instance.s3.amazon.com:80 weight=1 fail_timeout=120s;
# works as well with multiple backends. just for reference, as not needed with s3
# server your-instance-2.s3.amazon.com:80 weight=1 fail_timeout=120s;
}
server {
listen *:80;
server_name satic.your-site.com;
access_log /var/log/nginx/satic.your-site.com.access.log;
error_log /var/log/nginx/satic.your-site.com.error.log info;
add_header X-Cache-Status;
location / {
proxy_ignore_headers "Set-Cookie";
proxy_read_timeout 600;
proxy_cache_valid 200 302 1440m;
proxy_cache_valid 404 1m;
proxy_cache yoursite_cache;
proxy_pass http://yoursite_upstream;
}
}