in ngx_http_not_modified_header_filter if (r->headers_out.status != NGX_HTTP_OK || r != r->main || r->headers_out.last_modified_time == -1) { So, it only checks if-match or if-none-match if last-modified is set. Is this on purpose? I'm just wondering if we want to be able to check etime without checking last-modified.