如何在Nginx中返回204缺less的favicon.ico文件而不是404?

对于我的网站,我通常有两个server{}块:一个为该网站提供服务,另一个为来自不同域的该网站提供静态内容。 因为favicon.ico文件总是要求从主域而不是静态域,所以我必须处理该站点的server{}块中的特定文件,而不是静态文件块。

当找不到favicon.ico文件时,Nginx会返回我的404错误页面,以及404 HTTP状态码。 但是,我不想把这些位发送给我漂亮的404页面。 我想用204状态码发送完全空的响应。 以下是我所尝试的,但它不起作用。 有没有一个正确的方法来做到这一点? 这个想法是一个204会显示一个find的文件,但是一个完全空白的图像。

另外,我是否试图节省一点点实际上是一个坏主意? 如果,实际上,返回204而不是404是一个好主意,是否有一种更优雅的方式来返回一个空的404页面,而不创build一个新的和实际上是空的文件,并将其设置为该位置块内的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处找到文件作为后备。 这是相关的文件。

一个简单的“location / favicon.ico {return 204;}”将是最简单的。