Eu colocaria o drop.conf anteriormente no conf (logo após a diretiva root).
Certifique-se também de recarregar ou reiniciar o nginx para que ele esteja usando a nova configuração.
Eu tenho os seguintes arquivos drop.conf localizados em /etc/nginx/drop.conf
# if you don't like seeing all the errors for missing favicon.ico requests
# sent by a lot of browsers in root we dont need to log these - they mean extra IO
location = /favicon.ico { access_log off; log_not_found off; }
# if you don't like seeing errors for a missing robots.txt in root
# same reason as above - extra IO
location = /robots.txt { allow all; access_log off; log_not_found off; }
location = /apple-touch-icon.png { access_log off; log_not_found off; }
location = /apple-touch-icon-precomposed.png { access_log off; log_not_found off; }
# this will prevent files like .htaccess .htpassword .secret .git .svn etc from being served
# You can remove the log directives if you wish to
# log any attempts at a client trying to access a hidden file
location ~ /\. { deny all; access_log off; log_not_found off; }
# Deny access to any files with a .php extension in the uploads directory
location ~* ^/wp-content/uploads/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
# Deny access to any files with a .php extension in the uploads directory for multisite
location ~* /files/(.*).php$ {
deny all;
access_log off;
log_not_found off;
}
É estranho quando eu o incluo em qualquer diretiva do servidor - ou seja, em qualquer host virtual que eu tenha configurado - eu ainda estou recebendo log de favicon no meu log de acesso. Isso é um inseto ?? Parece que a inclusão simplesmente não está funcionando?
Exemplo do host virtual Estou incluindo isso em:
server {
listen 127.0.0.1:8080;
server_name .somehost.com;
root /var/www/somehost.com;
access_log /var/log/nginx/somehost.com-access.nginx.log main;
error_log /var/log/nginx/somehost.com-error.nginx.log;
location ~* \.php.$ {
# Proxy all requests with an URI ending with .php*
# (includes PHP, PHP3, PHP4, PHP5...)
include /etc/nginx/fastcgi.conf;
}
# all other files
location / {
root /var/www/somehost.com;
}
error_page 404 /errors/404.html;
location /errors/ {
alias /var/www/errors/;
internal;
}
#this loads custom logging configuration which disables favicon error logging
include /etc/nginx/drop.conf;
}
ainda nos registros de acesso para esse domínio, ainda vejo:
***** - - [06/Jul/2012:22:16:05 +0000] "GET /favicon.ico HTTP/1.1" 404 134 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11"
Sim, reiniciei e recarreguei o nginx.
Isso é realmente muito interessante. Quando eu adiciono uma diretiva de localização específica diretamente ao host virtual acima e desabilito as solicitações include favicon.ico ESTOU sendo registrado. ie. Eu comento in include bit e adiciono o seguinte ao host virtual acima:
#include /etc/nginx/drop.conf;
location = /favicon.ico { access_log off; log_not_found off; }
Muito estranho.
Eu colocaria o drop.conf anteriormente no conf (logo após a diretiva root).
Certifique-se também de recarregar ou reiniciar o nginx para que ele esteja usando a nova configuração.
Eu estava olhando para o mesmo problema, o favicon 404 gera uma sub-requisição AFAIK, sub-solicitações não herdam as configurações do local de onde foram chamadas. Minha solução para excluir o log de respostas 404 (e outras) é algo assim:
location = /favicon.ico
{
log_not_found off;
log_subrequest off;
access_log off;
error_page 404 /404notlogged.html;
try_files $uri =404;
}
location = /404notlogged.html
{
expires +1y;
log_not_found off;
log_subrequest off;
access_log off;
internal;
}
Tags nginx