“后备” http 服务器

“后备” http 服务器

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

当应用程序关闭时,是否有某种方法可以让系统本身 (Ubuntu Linux) 响应 HTTP 请求?或者换句话说,是否有某种方法可以配置服务器,以便每当正常响应为“连接被拒绝”时,它都会提供一些静态 (503) 页面?如果可能的话,如果它也可以处理 HTTPS 就太好了。

答案1

你可以使用哈普罗西在 tcp 模式下透明地代理请求。您的应用服务器不会知道其中的区别,除了远程 IP 将是本地主机。默认情况下,如果客户端无法联系后端服务器,它将向客户端返回错误。您还可以指定一个备份服务器,当后端服务器出现故障时,请求将路由到该服务器。

如果你真的想避免任何“代理”,你可以使用 iptables 来重定向端口。你可以运行像 nginx 这样的服务器,在未使用的端口上提供错误文件。使用监控脚本(或像监控),您可以使用如下规则将应用程序的端口重定向到错误服务器:

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

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

答案2

没有办法直接做到这一点(例如,如果应用程序关闭,应用程序关闭并且不会返回任何内容,甚至是错误)
但是,您可以运行像 NGINX 这样的程序,如果主服务器关闭或返回错误,它可以发送自定义错误。

相关内容