“fallback”http服务器

我有一个Web应用程序,由独立的应用程序提供服务。 有时JVM会在崩溃中运行,但是大多数情况下,我需要将其部署到新版本或更新系统。 由于各种原因,它必须直接提供HTTP / HTTPS请求,所以我不能在它前面使用代理。

有什么方法让系统本身(Ubuntu Linux)在应用程序closures时回答HTTP请求? 或者换句话说,有没有办法configuration服务器,以便每当正常的响应将被“连接拒绝”,它将服务一些静态(503)的页面呢? 如果可能的话,如果它能够处理HTTPS也是很好的。

您可以在tcp模式下使用haproxy来透明地代理请求。 您的应用程序服务器将不知道区别, 除了远程IP将是本地主机。 如果默认情况下它不能联系后端服务器,它会向客户端返回一个错误。 您还可以指定备份服务器,在后端closures时将请求路由到该服务器。

如果你真的想避免任何“代理”,你可以使用iptables来redirect端口。 你会运行一个像nginx这样的服务器来处理未使用的端口上的错误文件。 使用监视脚本(或像Monit这样的守护进程),可以使用以下规则将应用程序的端口redirect到错误服务器:

iptables -t nat -A PREROUTING -i eth0 -p tcp \ --dport $SVC_PORT -j REDIRECT --to-port $ERROR_PORT 

随着服务可用性的变化,您的监控系统需要dynamic插入或删除规则。

没有办法直接做到这一点(如果应用程序closures,应用程序closures,不会返回任何东西,即使是错误,IE浏览器)
但是,你可以运行类似NGINX的东西,如果主服务器closures或者返回错误,它可以发送自定义错误。