nginx는 $scheme
변수를 사용할 수 log_format
있습니다.
%H
요청 프로토콜입니다 (예 : "HTTP / 1.1").
Apache와 동일한 작업을 수행하려면 어떻게해야합니까?
nginx는 $scheme
변수를 사용할 수 log_format
있습니다.
%H
요청 프로토콜입니다 (예 : "HTTP / 1.1").
Apache와 동일한 작업을 수행하려면 어떻게해야합니까?
답변:
이를 수행하는 한 가지 방법 CustomLog
은 HTTPS
변수 설정 여부에 따라 제어되는 두 개의 조건부 지시문 을 갖는 것입니다.
CustomLog logs/access.log "https://..." env=HTTPS
CustomLog logs/access.log "http://..." env=!HTTPS
나는 또한 SetEnvIf
다음과 같은 방식으로 사용하려고 시도했지만 작동하지 않습니다 (it logs -
).
SetEnv URL_SCHEME=http
SetEnvIf HTTPS on URL_SCHEME=https
CustomLog logs/access.log "%{URL_SCHEME}e://..."
SetEnvIf
때문에 라인은 아파치 <2.4.1에서 작동하지 않습니다 mod_setenvif
분명히이 없다 는 SSL 환경에 액세스 할 수 . 2.2.22에 거의 나를 미치게했다.
mod_ssl
환경 변수를 통해 명시 적으로 지시 한 경우에만 환경 변수를 설정하십시오 SSLOptions
.
URL 스키마는 아파치 로그 형식으로 직접 사용할 수 없으므로 % p를 대안으로 사용하여 요청을 제공하는 서버의 표준 포트 (예 : 80/443)를 기록 할 수 있습니다.
CustomLog access.log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" port:%p"
이것은 Apache 2.4.23에서 작동합니다.
LogFormat "%{REQUEST_SCHEME}x ..." my_log_format
%{varname}x
mod_ssl이로드 된 경우에만 사용할 수 있습니다 ( https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#logformats 참조).
로그 출력을 정의하고 % H를 추가하십시오. 이것은 Apache에서도 마찬가지입니다.
따라서 LogFormat
이와 같이 빌드 하고 기본 아파치 구성에 몇 가지가 정의되어 있습니다.
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat의 이름을 로그 파일 호출의 끝에 추가하십시오 (이 경우 "common").
CustomLog logs/access_log common
%H
내가 필요한 것을 하지 않는다고 진술했다 .
mod_env
인해 사용자의 노력이 실패했을 수 있습니다 . 등호없이 변수와 값을 가져옵니다 .SetEnv
SetEnv URL_SCHEME http