我如何设置一个最小的networking服务器,只对所有请求提供一个页面?

一个最小的networking服务器端口80将是

python -m SimpleHTTPServer 80 

但是我总是只显示一个页面,名字叫maintenance.html ,不pipe要求什么页面。

浏览器中的url仍然应该保留访问者请求的url,但是没有错误页面。

主要为这个娱乐价值给出这个答案,但是你可以使用任何超级服务器 (xinetd也可以完成这个工作),并且为80端口上的每个请求运行一个简单的脚本。脚本将等待标准的空行input,然后打印一个准备好的静态响应。 不知道你可以得到多less轻量级。

例如,如果使用DJB的tcpserver (我发现很容易使用这种简单的任务),你可以这样做:

 $ tcpserver 127.0.0.1 1080 sh -c 'awk "/^\r*$/ { exit }"; cat answer' 

answer文件中可以有:

 HTTP/1.0 200 Date: Fri, 02 Nov 2012 16:05:54 GMT Content-Length: 15 Content-Type: text/html; charset=utf-8 This is a test 

你可以得到像你想要的创意。

这是我如何testing它:

 $ wget -q -O - http://localhost:1080/ This is a test 

更新:对于任何人认真考虑这一点,对于一个现实的使用tcpserver你最好像这样开始:

 tcpserver -H -R -l $HOSTNAME -u $(id -u nobody) -g $(id -g nobody) 0.0.0.0 80 sh -c 'awk "/^\r*$/ { exit }"; cat answer' 

在默认情况下,tcpserver会查找有关传入连接和-H (不要在DNS中查找远程名称)的信息,而-R (不要使用ident查找远程信息)将加快响应传入连接的速度。 -u-g将在接收到80端口的连接后放弃权限,并且必须以root身份启动才能在端口80上侦听。

当然,确保没有其他人在80端口上收听。

大概这是由你先前的问题的答案。

为什么不(暂时)在Apache中应用redirect规则将所有内容指向您的sitedown页面? (如果通过代理请求而不是redirect,那么在该位置的任何PHP脚本将能够读取所请求的URL)。 您可以交换不同的configuration,而不会丢失使用正常重启的任何请求。