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!)
É 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.
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!)
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.
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