我正在尝试为 CDN 设置冗余原始服务器,以便提供按需视频文件。当前的设置是,我有两台具有大存储容量并运行 nginx 的“媒体”服务器。在这两台服务器前面是另一台设置为反向代理的 nginx 服务器,将请求拆分到每台服务器。
每个视频的副本都存储在每个媒体服务器上。它们被复制到每个媒体服务器,但发生的时间可能略有不同。因此,nginx 将为视频请求返回略有不同的 LastModified 标头,具体取决于哪个 nginx 服务器为其提供服务。
问题是,缓存数据的 CDN 有时会向源服务器发送 IMS(如果自上次修改以来)请求,并将使用该信息来确定是否需要刷新其缓存中的视频。CDN 会针对视频发出字节范围请求,这些请求很容易在两个服务器之间拆分。如果字节范围请求继续获得不同的上次修改标头,那么一切都会搞砸。
这是一个可以解决的问题吗?我是否需要使用其他机制来保持两台服务器之间的数据“同步”?也许我可以使用 rsync 将数据从一台存储服务器复制到另一台存储服务器,并传入一个保留所有创建/修改时间的选项?
答案1
你只是复制文件?你用于复制的任何程序都会以某种方式复制时间戳,以便两个副本的时间戳相同。
例如,cp
在 Linux 上使用 GNU 程序:
cp --preserve=timestamps source destination
当然,因为这是默认行为...请检查用于复制文件的任何文档。