我在 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 加载,每个请求都会检查定义的规则,如果触发其中一个规则,则不会记录该请求