【发布时间】:2021-02-22 08:05:42
【问题描述】:
我部署了一个 dockerized web 应用程序,一切正常,记录每个请求,包括大量的健康检查,这些检查被配置为点击页面/health,一个空白页面。
我认为这是一个常见问题,我发现 this 问题针对不同的堆栈 (Elastic Beanstalk)。
我想要一个完全自动的解决方案,可能在Dockerfile
【问题讨论】:
我部署了一个 dockerized web 应用程序,一切正常,记录每个请求,包括大量的健康检查,这些检查被配置为点击页面/health,一个空白页面。
我认为这是一个常见问题,我发现 this 问题针对不同的堆栈 (Elastic Beanstalk)。
我想要一个完全自动的解决方案,可能在Dockerfile
【问题讨论】:
首先,我需要一个额外的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加载,每个请求都会检查定义的规则,万一其中一个触发,请求不会被记录
【讨论】: