如何在 Apache 中记录 URL 方案(http / https)?

Vla*_*eev 8 logging apache-2.2

nginx$scheme在其log_format行中有可用的变量。

%H 是请求协议(例如“HTTP/1.1”)。

我怎样才能对 Apache 做同样的事情?

小智 6

这对我来说适用于 Apache 2.4.23:

LogFormat "%{REQUEST_SCHEME}x ..." my_log_format
Run Code Online (Sandbox Code Playgroud)

%{varname}x仅在加载 mod_ssl 时可用,请参阅: https: //httpd.apache.org/docs/2.4/mod/mod_ssl.html#logformats


Vla*_*eev 3

一种方法是使用两个条件CustomLog指令,由是否HTTPS设置变量来控制。

CustomLog logs/access.log "https://..." env=HTTPS
CustomLog logs/access.log "http://..." env=!HTTPS
Run Code Online (Sandbox Code Playgroud)

我也尝试过SetEnvIf按以下方式使用,但它不起作用(它记录-):

SetEnv URL_SCHEME=http
SetEnvIf HTTPS on URL_SCHEME=https
CustomLog logs/access.log "%{URL_SCHEME}e://..."
Run Code Online (Sandbox Code Playgroud)