我在 aws-elastic-beanstalk 上运行了一个 Django 应用程序。我尝试禁用由我的健康检查引起的日志。健康检查已路由到单独的页面。
Elastic-beanstalk 使用 Apache + mod_wsgi。
这里有一个解决方案适用于 nginx 服务器。我尝试为 apache 创建类似的东西。
我发现条件日志可能是使用 Apache 服务器执行此操作的适当方法。
我的目录结构如下所示
/etc/httpd/
- conf
- httpd.conf # main conf
- conf.d
- wsgi.conf # virtual hosts
- additional config files
我的尝试:
files:
"/etc/httpd/conf.d/disable_health_logs.conf":
mode: "000644"
owner: root
group: root
content: |
<IfModule mod_setenvif>
SetEnvIf Request_URI "^/health/$" dontlog
CustomLog logs/access_log combined env=!dontlog
</IfModule>
附加配置disable_health_logs.conf
已创建,但没有任何效果。我既没有看到错误日志,也没有看到访问日志的变化。
其中httpd.conf
已经有以下设置:
CustomLog "logs/access_log" combined
我需要覆盖它吗?
答案1
我假设您正在使用以下方法加载模块
LoadModule setenvif_module <your_apache_modules_path>/mod_setenvif.so
另外,需要更正您的 IfModule 如下所示(注意:末尾的 .c)
<IfModule mod_setenvif.c>
SetEnvIf Request_URI "^/health/$" dontlog
CustomLog logs/access_log combined env=!dontlog
</IfModule>
否则,您所拥有的看起来是正确的。
答案2
因此我又尝试了一次。
问题确实出在 中的设置httpd.conf
。如果我取消注释该行:
#CustomLog "logs/access_log" combined
通过 ssh 手动使用我的设置并且健康检查从日志中消失。
请注意,这并不是一个永久的解决方案,因为 beanstalk 可能会启动一个新实例并再次覆盖 httpd.conf