Apache默认启用mod_log_config,支持通过%{Referer}i和%{User-Agent}i提取请求头,推荐使用内置combined格式并配合CustomLog指令生效,反向代理需透传对应头字段。
apache 默认就启用了 mod_log_config,无需额外安装 java 或依赖运行时;它原生支持自定义日志格式,包括 referer 和 user-agent 字段,只需在配置中显式启用并正确引用格式即可。
确认模块已加载
虽然该模块通常默认编译进 Apache(如 httpd-2.4),仍建议验证是否实际启用:
- 检查主配置文件(/etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf)中存在:
LoadModule log_config_module modules/mod_log_config.so - 执行命令快速确认:
apachectl -M | grep log_config(CentOS/RHEL)
或a2enmod headers && apache2ctl -M | grep log_config(Debian/Ubuntu)
启用 Referer 和 User-Agent 日志字段
这两个字段对应请求头 Referer 和 User-Agent,需用 %{Referer}i 和 %{User-Agent}i 语法提取(i 表示 input header):
使用 Revelata deepKPI 对美国上市公司进行财务与运营 KPI 研究,获取 SEC 报表(10‑K/10‑Q/8‑K)中的分部、单位 KPI(如门店、同店等)
- 推荐直接复用 Apache 内置的
combined格式,它已包含这两项:LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - 若需自定义,可新建格式名(如
full_access),确保引号包裹字段值,避免解析错误:LogFormat "%h %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" full_access
将格式应用到日志输出
仅定义 LogFormat 不生效,必须配合 CustomLog 指令:
- 全局启用(所有虚拟主机共用):
CustomLog /var/log/apache2/access.log combined - 按虚拟主机独立启用(更推荐):
在<VirtualHost>块内写:CustomLog /var/log/apache2/site-a-access.log combined - 注意:路径需有写权限,目录须提前创建;若日志不滚动,建议搭配
rotatelogs或 logrotate 使用
常见问题排查
Referer 或 User-Agent 显示为 - 是正常现象,表示客户端未发送该请求头:
- 浏览器直连时,Referer 在跳转或点击链接时才存在;直接输入 URL 或新标签页访问通常为空
- User-Agent 几乎总存在,若为空,可能是爬虫伪造、curl 未设
-A参数,或中间代理(如 CDN)清除了该头 - 反向代理场景下(如 Nginx → Apache),需确保前端透传
Referer和User-Agent,例如 Nginx 中配置:proxy_set_header Referer $http_referer;<br>proxy_set_header User-Agent $http_user_agent;

















