0%

Nginx忽略404错误日志

最近尝试使用nginx来提供一些静态的json文件来作为配置,最为简单的做法就是提供下面这样的配置了:

1
2
3
location ~ ^/myconf/(?<filename>.*)$ {
alias /home/knktc/myconf/$filename;
}

但是问题来了,如果匹配不到配置文件的话,直接返回的是nginx的404页面,为了能让前端代码更容易地处理下这种情况,可以加点配置,让文件找不到的时候直接返回空的json对象,于是配置可以改成下面的这样:

1
2
3
4
5
6
7
8
9
location ~ ^/myconf/(?<filename>.*)$ {
alias /home/knktc/myconf/$filename;
error_page 404 = @not_found_fallback;
}

location @not_found_fallback {
add_header Content-Type text/plain;
return 200 "{}";
}

现在的话,如果文件不存在的话,就可以返回一个空的json对象了。

但是问题又来了:这种情况下nginx的error.log里面又记录了一次404的错误事件,于是还需要继续改下配置,把not found的日志给关掉:

1
2
3
4
5
6
7
8
9
10
location ~ ^/myconf/(?<filename>.*)$ {
alias /home/knktc/myconf/$filename;
error_page 404 = @not_found_fallback;
log_not_found off;
}

location @not_found_fallback {
add_header Content-Type text/plain;
return 200 "{}";
}

这下就OK了。使用Nginx静态文件能力来做一些简单的接口还是很方便的。

如果我的文字帮到了您,那么可不可以请我喝罐可乐?