nginx在404上重试一次静态文件

在我的testing场景中,如果正在创build一个文件,并且有人请求文件404将被返回。 我想为该文件实施一次重试。 当前configuration

location /file/ { root /var/www/html/; try_files $uri $uri/ @retry; } location @retry { proxy_pass http://127.0.0.1; } 

这适用于实时文件创build和访问(如果一个文件返回404重试类)。 但如果一个文件不存在,它会创build一个嵌套的请求(我猜),这将最终返回503网关超时。
1)有没有更好的实施呢?
2)当第一个请求超时,嵌套请求也会死掉吗?

只需复制您的位置块,而不是代理到本地主机。

 location /file/ { root /var/www/html/; try_files $uri $uri/ @retry; } location @retry { root /var/www/html/; try_files $uri $uri/ =404; } 

但是考虑到nginx处理请求的速度有多快,这个静态文件的重试似乎是一个奇怪的想法。 您应该修改您的工作stream程中所考虑的内容。