将所有流量(无论端口或协议)重定向到临时页面

将所有流量(无论端口或协议)重定向到临时页面

我有一台具有多个域名的服务器。既有 http (apache) 流量,也有 http-alt (tomcat) 流量。

如果/当我关闭服务器时,我希望能够将人们重定向到临时的“正在维护”页面,而不管他们的目标 URL/端口如何。

如何实现?我需要在辅助服务器上运行 tomcat 吗?或者有没有办法通过我不知道的某种方法捕获所有流量并重定向?我尝试过简单地将所有 80/8080 流量强制发送到辅助服务器,但根据 URL,它无法解析,并且在尝试访问 :8080/whatever 时它永远无法解析。有什么想法吗?

编辑(更新):我已经成功实现了对所有域和任何端口 80 流量的捕获,使用_default_ vhost,但它仍然没有在 8080 上捕获任何东西,尽管我指定了:

<VirtualHost _default_:*>
    DocumentRoot /var/www
    ServerName host
    ServerAlias *
    ErrorDocument 404 /index.html
</VirtualHost>

有人知道为什么或该怎么办吗?

编辑(更新2):使用 tomcat 的error-code

在 /etc/tomcat/web.xml 中我添加了

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/index.html</location>
</error-page>

我现在可以让它在 tomcat 的根目录下工作http://domain.com:8080但对于一般的 404 错误,则没有类似http://domain.com:8080/nonexistentpath

有什么想法吗?谢谢

答案1

正如我在问题更新中指出的以及上面的评论中所述:

为了处理端口 Apache(端口 80)404,我在 Apache 配置中使用了以下内容:

<VirtualHost _default_:*>
    DocumentRoot /var/www
    ServerName host
    ServerAlias *
    ErrorDocument 404 /index.html
</VirtualHost>

为了在 Tomcat(我的情况是 8080)中处理它们,/etc/tomcat/web.xml我添加了:

<error-page>
    <error-code>404</error-code>
    <location>/index.html</location>
</error-page>

我遇到的唯一另一个问题是 tomcat 404 无法在 IE 上显示。我最终需要向页面添加其他数据以注释的形式给文件增加一些权重,以便 IE 显示我的自定义页面而不是它自己的页面。多么愚蠢。

我希望这能在未来帮助到其他人。

相关内容