You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache反向代理:如何在出现503服务不可用时发送通知

实现Apache 503错误触发脚本执行的方案

可以通过Apache的模块配置或日志监控的方式,实现503错误发生时自动执行通知脚本,以下是几种可行的方法:

方法一:ErrorDocument + CGI脚本捕获503错误

直接在Apache配置中指定503错误对应的处理脚本,当反向代理返回503时,自动触发CGI脚本执行通知逻辑。

  1. 配置Apache ErrorDocument
    在Apache的虚拟主机配置或全局配置中添加:

    ErrorDocument 503 /cgi-bin/notify_admin.cgi
    
  2. 编写CGI通知脚本
    在Apache的cgi-bin目录(通常为/usr/lib/cgi-bin/)下创建notify_admin.cgi脚本,示例如下(bash版本):

    #!/bin/bash
    # 返回503响应内容给客户端
    echo "Content-type: text/plain"
    echo ""
    echo "Service Unavailable"
    
    # 发送邮件通知管理员
    echo -e "Subject: 服务器503告警\n\n后端服务(localhost:8080)已不可用,请及时排查。" | sendmail -v admin@yourdomain.com
    
  3. 设置脚本权限
    确保脚本有执行权限,且Apache用户(通常为www-data)可读取执行:

    chmod +x /usr/lib/cgi-bin/notify_admin.cgi
    chown www-data:www-data /usr/lib/cgi-bin/notify_admin.cgi
    

方法二:监控Apache错误日志触发脚本

通过实时监控Apache的错误日志,当检测到503相关日志条目时,调用通知脚本。

  1. 编写日志监控脚本
    创建monitor_503.sh脚本:

    #!/bin/bash
    # 实时监控错误日志,匹配503错误
    tail -F /var/log/apache2/error.log | grep -i "503 service unavailable" | while read line
    do
        # 触发通知逻辑
        echo -e "Subject: Apache 503错误告警\n\n错误日志内容:$line" | sendmail admin@yourdomain.com
    done
    
  2. 后台运行监控脚本
    可以将脚本设为后台运行,或通过systemd配置成开机自启服务,确保持续监控。

方法三:Apache 2.4+ 用mod_lua实现自定义钩子

如果使用Apache 2.4及以上版本,可通过mod_lua模块在请求处理流程中捕获503状态码,触发自定义逻辑。

  1. 加载mod_lua并配置钩子
    在Apache配置中添加:

    LoadModule lua_module modules/mod_lua.so
    LuaHookFixups handle_503_error /etc/apache2/lua/handle_503.lua
    
  2. 编写Lua处理脚本
    创建handle_503.lua:

    function handle_503_error(r)
        if r.status == 503 then
            # 调用外部通知脚本
            os.execute("/usr/local/bin/send_alert.sh")
        end
        return apache2.OK
    end
    

注意事项

  • 确保Apache执行脚本的用户(如www-data)拥有发送邮件的权限,可提前配置sendmail或postfix允许本地邮件发送。
  • 通知逻辑尽量异步执行,避免脚本阻塞Apache的请求响应。
  • 测试时可手动停止localhost:8080的服务,验证503错误是否触发脚本执行。

内容的提问来源于stack exchange,提问作者Abdelghani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:42:38