2009-08-19 26 views
8

偶尔,当我尝试打开一个网站时,我会看到一个页面显示“此网站处于脱机状态以进行维护”,然后根据可能需要的时间对其进行评论。堆栈溢出也是如此。“如何离线维护”页面如何实施?

它是如何工作的?我的意思是,如果网站已关闭,谁回复我的HTTP请求并提供此页面?

+0

相关问题:http://stackoverflow.com/questions/756532/strategies-for-showing-a-nice-currently-offline-page-when-the-server-is-down – Spoike 2009-08-19 07:40:20

回答

18

有在asp.net一招,你放置一个名为

App_Offline.htm 

所有请求都将这个文件,直到页面被删除。

对于其他环境,您通常可以更改服务器指向的位置或其他此类计划。

- 编辑

服务器无关的方法是通过类似于负载平衡来实现的。

在引擎盖下,您可以将请求发送到给定的内部服务器。然后,您可以决定将所有请求指向您的服务器“a”,您将其配置为显示“停机时间”页面。然后,您对服务器'b'进行更改,确认其成功,并将所有请求指向'b'。然后你更新'a',并让请求都去。

11

在ASP.NET(和Stackoverflow使用的ASP.NET MVC)中,这由app_offline.htm feature提供。这只需将所有ASP.NET请求转发到app_offline.htm文件即可。

顺便提一下,ASP.NET中的copy Web Site tool执行将此文件放入Web应用程序根目录的过程,复制网站文件并删除此文件。

其他技术的策略是discussed here

2

可以将apache反向代理服务器配置为发送该响应 - 如果该响应正用作该体系结构的一部分。

5

在apache中,您可以对此内容使用.htacces文件。

order deny,allow 
allow from 192.168.1.151 
deny from all 

ErrorDocument 403 404.html 
ErrorDocument 404 404.html 
ErrorDocument 500 404.html 

这将拒绝访问除一个IP以外的所有人并提供静态404.html文件。

这种情况下,你只有一台服务器没有负载平衡和其他的东西。尽管如此,也应该为负载平衡工作。