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

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

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

上传文件时,用户会收到嵌入代码……即缩略图 URL + 完整尺寸的链接,完整尺寸即 html 页面。因此,它可能类似于http://www.domain.com/temp_content/filename.jpg链接到http://www.domain.com/文件-ID

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

如果用户获取了原始代码……缩略图文件将被破坏。

我可以不使用 cron 将文件移动到其目标位置,但这需要时间,并且会使脚本滞后,直到移动完成。我也不喜欢让用户运行这样的命令,我宁愿让服务器定期执行这些命令。

我还能做些什么吗?

答案1

我会从抽象文件名开始。这将为你省去很多麻烦。

然后,您可以分发第二个链接 (server1.domain.com),因为大多数请求都会发往该链接,然后使用 mod_rewrite 处理文件尚未移动的极端情况。例如:

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

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

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

答案2

您能否将发送给用户的消息更改为包含这两个 URL?

您还可以制作自定义错误页面,允许用户输入他们所给出的 URL 并自动翻译。

相关内容