对于我的网站,我通常有两个 server{}
块:一个为网站服务,另一个从不同的域为该网站提供静态内容。因为 favicon.ico
文件总是从主域而不是静态域中请求,我必须在网站的 server{}
而不是静态文件块。
当一个 favicon.ico
文件未找到,Nginx返回我的定义404错误页面,以及404 HTTP状态码。然而,我不想为我漂亮的404页面发送这些位。我想发送一个完全空的响应和204状态码。下面是我试过的,然而并不奏效。有什么正确的方法吗? 我的想法是,204将表示一个发现的文件,然而一个完全空白的图像。
另外,我试图保存位的做法其实是个坏主意吗? 如果,事实上,返回204而不是404是个坏主意,那么有没有一种更优雅的方法来返回一个空的404页面,而不需要创建一个新的、实际上是空的文件,并将其设置为一个新的文件?error_page
指令在该位置块内?
server {
...
error_page 404 /../static/404.html;
location @return_204 {
return 204;
}
# Case-insensitive matching of .txt and .xml files.
# (Example: robots.txt, crossdomain.xml, and sitemap.xml)
location ~* \.(txt|xml)$ {
try_files $uri /../static/$uri;
}
location = /favicon.ico {
log_not_found off;
error_page 404 = @return_204;
try_files $uri /../static/$uri;
}
...
}
一个简单的
location /favicon.ico { return 204; }
会是最简单的。