如何使静态 URL 指向不同的服务器?

2 storage file-transfer

我正在为正在运行的文件上传站点构建多服务器支持。当图像上传.... 它们被缩略图化并存储在主前端服务器上,直到 cron 执行(每 10 分钟一次)并将它们移动到存储服务器,因此在前 10 分钟内,它们将驻留并提供服务关闭主前端服务器。

上传文件时,用户会获得嵌入代码......这是一个缩略图 url + 完整大小的链接,这是一个 html 页面。所以它可能类似于http://www.domain.com/temp_content/filename.jpg链接到http://www.domain.com/file-ID

除了 10 分钟,http://www.domain.com/temp_content/filename.jpg不会存在,它将是http://server1.domain.com/thumbs/filename.jpg

如果用户抓住了原始代码......拇指文件将被破坏。

我可以在没有 cron 的情况下将文件移动到其目的地,但这需要时间,并且会延迟脚本直到移动完成。我也不喜欢让用户运行这样的命令,我宁愿让服务器定期执行这些命令。

我还能做什么?

Dan*_*ley 10

我会从总是抽象文件名开始。它会为您省去很多麻烦。

然后,您可以分发第二个链接 (server1.domain.com),因为这是大多数请求将到达的地方,然后处理尚未使用 mod_rewrite 移动文件的边缘情况。例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.*)$ http://www.domain.com/$1 [R=302]
Run Code Online (Sandbox Code Playgroud)

这将 302(临时)将请求重定向到其他域不存在的文件。

或者,您可以从第二台服务器提供第一台服务器的存储。