Como registrar o esquema de URL (http / https) no Apache?

8

O nginx tem a variável $scheme utilizável em suas linhas log_format .

%H é o protocolo de solicitação (por exemplo, "HTTP / 1.1").

Como posso fazer o mesmo com o Apache?

    
por Vladimir Panteleev 13.02.2012 / 08:59

5 respostas

3

Uma maneira de fazer isso é ter duas diretivas CustomLog condicionais, controladas por se a variável HTTPS está definida.

CustomLog logs/access.log "https://..." env=HTTPS
CustomLog logs/access.log "http://..." env=!HTTPS

Eu também tentei usar SetEnvIf da seguinte maneira, mas não funciona (registra - ):

SetEnv URL_SCHEME=http
SetEnvIf HTTPS on URL_SCHEME=https
CustomLog logs/access.log "%{URL_SCHEME}e://..."
    
por 13.02.2012 / 09:25
3

Como o esquema de url não está diretamente disponível no formato de log do apache, você pode registrar a porta canônica (por exemplo, 80/443) do servidor que atende a solicitação usando% p como alternativa:

CustomLog access.log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" port:%p"
    
por 06.02.2015 / 17:29
2

Por algum motivo, não consegui fazer com que os exemplos acima funcionassem, portanto, encontrei uma outra maneira: você pode adicionar duas regras de reconfiguração à sua configuração da seguinte forma:

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [E=SCHEME:HTTP]

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [E=SCHEME:HTTPS]

Em seguida, adicione isso à sua definição do LogFormat.

scheme=\"%{SCHEME}e\"
    
por 24.09.2013 / 13:32
2

Isso funciona para mim com o Apache 2.4.23:

LogFormat "%{REQUEST_SCHEME}x ..." my_log_format

%{varname}x só está disponível quando mod_ssl é carregado, consulte: link

    
por 03.09.2016 / 04:07
-2

Defina sua saída de log e adicione% H a ela. Isso é o mesmo para o Apache.

Então, você constrói um LogFormat como este e o afaik tem um par definido na configuração padrão do apache.

LogFormat "%h %l %u %t \"%r\" %>s %b" common

e adicione o nome do LogFormat (neste caso, "comum") ao final da sua chamada do arquivo de log

CustomLog logs/access_log common

Veja aqui mais informações sobre o log e aqui sobre as diferentes strings de formato.

    
por 13.02.2012 / 09:17