对于我的网站,我通常有两个服务器{}块:一个为网站服务,另一个为来自不同域的该网站提供静态内容.因为始终要求从主域而不是静态域中获取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 {
try_files $uri = 204;
}
它将尝试在URI或204处查找文件作为后备.
Here’s the relevant documentation.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。