这取决于您的具体需求,但我认为这里最简单的解决方案是使用带缓存的反向代理。
这 - 当然 - 仅适用于您在亚马逊上拥有主要文件并将您的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;
}
}