varnish отправляет код 200 вместо 304 При использовании слабого валидатора ETag \W

Близкая проблема на трекере: https://varnish-cache.org/trac/ticket/1816

Currently when the client sends a request with weak ETag and it matches, Varnish returns response with 200 status code on cache hit.

But it should actually return 304 just like with strong ETag.

Эксперимент с выключением \W

Запрос вида:

curl -I 'http://dev.cartimes.ru' -H 'If-None-Match: "20e208217929cc010a4a7f7467d3e681"'

вернёт код 304
А запрос вида

curl -I 'http://dev.cartimes.ru' -H 'If-None-Match: W/"20e208217929cc010a4a7f7467d3e681"'

вернёт уже 200.
Идея отсюда: https://github.com/phalt/swapi/issues/92
Но проблема в том, что клиент (браузер) всегда будет подставлять в If-None-Match, то что пришло в ETag, т.е. в случае нашей проблемы это будет значение с \W.

Следует отметить, что проблема наблюдается именно в nginx.