![如何防止 apache 在 Docker 中记录 ELB 健康检查?](https://linux22.com/image/759730/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20apache%20%E5%9C%A8%20Docker%20%E4%B8%AD%E8%AE%B0%E5%BD%95%20ELB%20%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5%EF%BC%9F.png)
我在 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 加载,每个请求都会检查定义的规则,如果触发其中一个规则,则不会记录该请求