Usando% v na definição do Apache LogFormat corresponde ao ServerName em vez do vhost específico solicitado

2

Temos um aplicativo que usa um caractere curinga de DNS, por exemplo, * .app.example.com. Estamos usando o Apache 2.2 no Ubuntu Hardy. As partes relevantes da configuração do Apache são as seguintes.

No /etc/apache2/httpd.conf:

LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vlog

Em /etc/apache2/sites-enabled/app.example.com:

ServerName app.example.com
ServerAlias *.app.example.com
...
CustomLog "|/usr/sbin/vlogger -s access.log /var/log/apache2/vlogger" vlog

Os clientes acessam este aplicativo usando seu próprio URL, por exemplo, company1.app.example.com, company2.app.example.com, etc.

Anteriormente, a %v na diretiva LogFormat corresponderia ao nome do host da solicitação do cliente e obteríamos vários subdiretórios em / var / log / apache2 / vlogger correspondente às várias URLs de clientes em uso. / p>

Agora, %v parece estar correspondendo ao valor ServerName , portanto, só obtemos um registro em /var/log/apache2/vlogger/app.example.com. Isso quebra nossa análise de arquivo de log porque o arquivo de log não tem indicação de qual cliente o log está relacionado.

Posso corrigir isso facilmente alterando o LogFormat para isso:

LogFormat "%{Host}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vlog

Isso usará o cabeçalho HTTP Host: para informar ao vlogger qual subdiretório criar os logs e tudo ficará bem.

A única preocupação que tenho é que isso funcionou no passado e não consigo encontrar qualquer indicação de que isso tenha mudado recentemente.

Alguém mais está usando uma configuração semelhante, por exemplo, curinga + vlogger e usando %v ? Está funcionando bem?

    
por ThatGraemeGuy 19.04.2010 / 12:22

2 respostas

2

% v é e sempre foi o nome canônico do vserver, ive apenas verifiquei os manuais para ambos os 1.3, 2.0 e 2.2 e todos eles dizem

%...v:          The canonical ServerName of the server serving the request.

link

link

link

    
por 19.04.2010 / 17:55
3

Há também % V (observe o limite) e o useCanonicalName option

    
por 19.06.2012 / 20:22

Tags