反向 HTTP 代理作为 CDN 源服务器,如何处理上次修改时间?

反向 HTTP 代理作为 CDN 源服务器,如何处理上次修改时间?

我正在尝试为 CDN 设置冗余原始服务器,以便提供按需视频文件。当前的设置是,我有两台具有大存储容量并运行 nginx 的“媒体”服务器。在这两台服务器前面是另一台设置为反向代理的 nginx 服务器,将请求拆分到每台服务器。

每个视频的副本都存储在每个媒体服务器上。它们被复制到每个媒体服务器,但发生的时间可能略有不同。因此,nginx 将为视频请求返回略有不同的 LastModified 标头,具体取决于哪个 nginx 服务器为其提供服务。

问题是,缓存数据的 CDN 有时会向源服务器发送 IMS(如果自上次修改以来)请求,并将使用该信息来确定是否需要刷新其缓存中的视频。CDN 会针对视频发出字节范围请求,这些请求很容易在两个服务器之间拆分。如果字节范围请求继续获得不同的上次修改标头,那么一切都会搞砸。

这是一个可以解决的问题吗?我是否需要使用其他机制来保持两台服务器之间的数据“同步”?也许我可以使用 rsync 将数据从一台存储服务器复制到另一台存储服务器,并传入一个保留所有创建/修改时间的选项?

答案1

你只是复制文件?你用于复制的任何程序都会以某种方式复制时间戳,以便两个副本的时间戳相同。

例如,cp在 Linux 上使用 GNU 程序:

cp --preserve=timestamps source destination

当然,因为这是默认行为...请检查用于复制文件的任何文档。

相关内容