Apache 在发生错误时将请求重定向到另一台服务器

Apache 在发生错误时将请求重定向到另一台服务器

我目前有 3 台 Web 服务器,它们在 DNS 级别对大型文件进行负载平衡。其中一台是“主”服务器,两台是“从”服务器。

主服务器拥有所需的所有文件,并将文件推送到从服务器。在某些情况下,其中一个或两个从服务器都没有特定文件。在这种情况下,整个过程会放弃,这并不理想。

当从属服务器没有文件时,我希望它将请求重定向到主服务器,以免该过程失败。

我知道我可以使用 ErrorDocuments 来显示自定义错误页面(即使该错误页面位于另一台服务器上,就像这样):ErrorDocument 404 http://master.exmaple.com/404page.html但是,我希望它从主服务器提供文件,而不是错误页面。

在我看来,这可以通过类似的东西来实现,ErrorDocument 404 http://master.example.com/{{requested_file}}但我不知道这样的事情是否有可能。

我觉得我这里漏掉了一些简单的东西。有人能给我指出正确的方向吗?

Apache 2.4.7 在 Ubuntu 14.04 上运行

谢谢。

答案1

您可以使用 ErrorDocuments 和 mod_rewrite 的组合来实现这一点

所以你的 ErrorDocument 应该是

ErrorDocument 404 /not_found_redirect/

因此,当找不到文档时,服务器会重定向到本地 URL。诀窍是将许多环境变量传递到重定向的 URL(http://httpd.apache.org/docs/current/custom-error.html#variables)。REDIRECT_REQUEST_URI 应该是您想要的那个。

因为在 mod_rewrite 中,你使用环境变量重定向到主服务器

RewriteEngine On
RewriteRule   ^/not_found_redirect/  http://master.example.com%{REDIRECT_REQUEST_URI}  [R,L]

并且浏览器应该被发送到主服务器上的正确位置。

相关内容