Como esconder parte do caminho no log de erros do nginx

3

É possível configurar o nginx para a saída na parte especificada do log de erros do caminho dos arquivos? Por exemplo:

2017/09/16 19:59:28 [error] 10656#10656: *1702 open() "/home/user/www/favicon.ico" failed (2: No such file or directory), client: 256.256.256.256, server: example.com, request: "GET /favicon.ico HTTP/1.1", host: "example.com", referrer: "http://example.com/"

O usuário tem chroot em "/ home / user /", então "favicon.ico" para este usuário tem este caminho: "/www/favicon.ico". Caminho real do arquivo é um pouco confuso.

    
por aabaev 16.09.2017 / 21:04

3 respostas

1

Esta mensagem de erro está sendo produzida pelo servidor PHP FastCGI. Para fazê-lo usar caminhos relativos ao chroot, execute o servidor FastCGI no chroot. (Isso também vai sandbox os scripts PHP, o que provavelmente é uma coisa boa!)

    
por 17.09.2017 / 00:30
0

Em vez de denunciar nomes de caminho ausentes no log de erros, você pode relatar URIs ausentes no log de acesso.

Por exemplo:

try_files $uri $uri/ =404;

A declaração acima deve fazer com que nginx se comporte de forma quase idêntica ao seu comportamento padrão, exceto ao registrar URIs perdidos.

Veja este documento para saber mais.

    
por 17.09.2017 / 13:02
0

Se alguém tiver um problema semelhante, é assim que eu resolvo (não pode ser marcado como a pergunta certa, porque isso é uma solução alternativa):

inotifywait -m -e modify --format "%w%f" /home/user/log/nginx/example.com.error.log | while read f; do if [[ $(grep "/home/user" $f | wc -c)  != 0 ]] ; then sed 's/\/home\/user//g' $f > $f\t ; cat $f\t > $f ; fi done

Onde inotifywait (pacote inotify-tools) é o inspetor de arquivos no modo monitor, que é acionado quando a modificação do arquivo é feita:

inotifywait -m -e modify --format "%w%f"

então, em um loop while, precisamos executar 2 comandos, mas primeiro verificar se a nova modificação do arquivo contém uma string específica, para evitar o empilhamento em loop infinito:

if [[ $(grep "/home/user" $f | wc -c) != 0 ]]

Se o resultado do comando grep "/ home / user" $ f passou em wc -c que é o comprimento médio da string ! = 0 então modifique o arquivo substituindo todo / home / user para a cadeia de comprimento 0 // , salve a saída no arquivo temporário e finalmente grave essa saída do arquivo temporário no arquivo de log de erros do nginx cat $ f \ t > $ f

sed 's/\/home\/user//g' $f > $f\t; cat $f\t > $f;done

    
por 28.09.2017 / 17:36