我有一个 Apache 2.2,它托管一个专有(商业)身份验证模块。该模块会查看每个请求,如果这些请求在后端身份验证软件中被标记并显示“匿名”则可能会让它们通过。
其中一个匿名资源是我们的 Apache 前端负载平衡器查询的小型 gif,名为/lb.gif
。
当身份验证软件出现问题时,其模块不会冒任何风险,并会阻止所有内容,包括我们的负载平衡器信标文件。负载平衡器认为该网站已关闭并停止向其发送流量。
我希望 Apache 不要将这个特定请求发送给其他模块。这作品种类:
RewriteEngine On
RewriteRule ^/lb.gif$ - [R=200]
看到这个,Apache 返回一些带有 200 结果的 HTML:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>200 OK</title>
</head><body>
<h1>OK</h1>
<p>The server encountered an unknown error, possibly due to misconfiguration.
Contact the server administrator: [no address given]<p>
More information about this error may be available
in the server error log.</p>
</body></html>
它满足了负载均衡器的要求,但却使我们用于监控的另一个工具感到困惑。
有没有办法告诉 Apache 停止处理并立即返回资源,而不是将请求进一步发送到模块链?
答案1
您可能会争辩说,当您的身份验证模块出现故障时,负载均衡器检查失败正是您所需要的......
我过去使用过的一种解决方法是在 Apache 配置中设置一个单独的 VirtualHost,您可以在其中禁用身份验证,并假设负载均衡器 http 客户端发送 HTTP 1.1 Host 标头,通过轮询该 VirtualHost 而不是您的主站点来验证 Web 服务器节点的正常运行时间。