【问题标题】:How to configure Nginx with CloudFront to benefit from CloudFront's caching?如何使用 CloudFront 配置 Nginx 以从 CloudFront 的缓存中受益?
【发布时间】:2018-03-01 19:19:20
【问题描述】:

我有一个带有 Wordpress 的网站。该网站托管在 Nginx 和 php-fpm 上。我添加了 CloudFront 以提高性能并减少源服务器负载。

但是,我可以在 Chrome 的开发者工具控制台中看到,所有资源在 x-cache 标头中都有 Miss from CloudFront 值。

我不确定应该如何配置 Nginx 和 CloudFront 才能正常工作并从缓存中受益。

我相信这都是关于应该由 Nginx 设置的正确标题(例如,Cache-Control: public 用于图像?)。我找不到任何可以涵盖所有情况并且不会弄乱 Wordpress 管理面板的示例(这个不应该被缓存,对吧?)。

【问题讨论】:

    标签: caching nginx amazon-cloudfront cache-control


    【解决方案1】:

    安装WP Super Cache plugin 可以快速解决;除其他外,还支持 CDN。

    在 Nginx 方面,您可以对静态内容执行类似的操作:

    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
        expires 30d;
        add_header Pragma public;
        add_header Cache-Control "public";
    }
    

    您可以添加尽可能多的指令,而不是只需要图像,例如:

    location ~* \.(?:cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
         access_log off;
         add_header Cache-Control "max-age=2592000";
         #... more options
    }
    

    ?: 前缀是一个“非捕获”标记,这意味着我们不需要将模式捕获到 $1 中,这应该有助于提高性能。

    您可以找到有关Nginx expires option here 的更多信息。

    【讨论】:

    • 非常感谢。这很有帮助。但是,我有一种感觉,您的答案可以改进一点。我的意思是,ico|css|js|gif|jpe?g|png 不是我唯一应该缓存的,对吧? (或者是?)
    • 对,这基本上就是 WP 插件通过生成页面的静态内容所做的事情。
    • 我添加了您提供的行,但尽管资源具有新标题,但它们仍然具有 Miss from CloudFront。申请需要更多时间吗?
    • @Defozo 第一次从特定 CloudFront 边缘请求特定资源时,总是会失败。无需等待。您为转发配置的内容(标头、cookie、查询字符串)也将决定请求命中的频率,缓存行为 TTL 或“使用原始缓存标头”的正确配置也会产生影响。
    猜你喜欢
    • 2019-05-03
    • 2021-12-26
    • 2017-10-02
    • 2021-01-02
    • 2018-05-07
    • 2014-02-22
    • 1970-01-01
    • 2017-03-03
    • 2020-03-05
    相关资源
    最近更新 更多