如何防止 apache 在 Docker 中记录 ELB 健康检查?

如何防止 apache 在 Docker 中记录 ELB 健康检查?

我在 ECS 中部署了一个 dockerized web 应用程序,并且一切运行正常,在 cloudwatch 中记录每个请求,包括大量的运行状况检查,这些检查配置为点击页面/health,即空白页。

我希望有一个完全自动化的解决方案,并且可能Dockerfile

答案1

首先,我需要一个 Apache 的附加配置文件,我们称之为apacheLogFilter.conf

内容非常简单,但可以根据需要进行自定义,定义自定义规则。诀窍是定义一个自定义环境变量,如果存在,则停止该请求的记录

SetEnvIf Request_URI "^/health$" dontlog

一旦定义了这个新配置,我们需要将其直接插入到 apache 中Dockerfile,添加以下行:

FROM php:7.2-apache

...

# Copy the log-filtering configuration in the right place
COPY  apacheLogFilter.conf /etc/apache2/conf-enabled

# Change the standard logging entry of all the available sites to use the variable 
RUN sed -ri -e 's!combined!combined env=\!dontlog!g' /etc/apache2/sites-available/*.conf

...

这样,配置文件将在启动时由 apache 加载,每个请求都会检查定义的规则,如果触发其中一个规则,则不会记录该请求

相关内容