diff options
author | aszlig <aszlig@nix.build> | 2020-01-02 21:41:48 +0100 |
---|---|---|
committer | aszlig <aszlig@nix.build> | 2020-01-02 21:41:59 +0100 |
commit | 845e92835d90d300142157c6bae9ca5b7831e2bd (patch) | |
tree | 527a5847441933e7cf8a61c253f08abbbe0e19f1 /pkgs/servers | |
parent | 129c73802fdddacb20cf194bd2968d73ebced590 (diff) | |
parent | ccf55bead1f3bc2a6419a9fdcec55933ffe046de (diff) |
Merge Last-Modified fix for nginx (#76697)
This fixes the patch for nginx to clear the Last-Modified header if a static file is served from the Nix store. So far we only used the ETag from the store path, but if the Last-Modified header is always set to "Thu, 01 Jan 1970 00:00:01 GMT", Firefox and Chrome/Chromium seem to ignore the ETag and simply use the cached content instead of revalidating. Alongside the fix, this also adds a dedicated NixOS VM test, which uses WebDriver and Firefox to check whether the content is actually served from the browser's cache and to have a more real-world test case.
Diffstat (limited to 'pkgs/servers')
-rw-r--r-- | pkgs/servers/http/nginx/nix-etag-1.15.4.patch | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/pkgs/servers/http/nginx/nix-etag-1.15.4.patch b/pkgs/servers/http/nginx/nix-etag-1.15.4.patch index 9dec715bf6c59..c1473ccdb1b9d 100644 --- a/pkgs/servers/http/nginx/nix-etag-1.15.4.patch +++ b/pkgs/servers/http/nginx/nix-etag-1.15.4.patch @@ -1,14 +1,8 @@ -From f6a978f024d01202f954483423af1b2d5d5159a6 Mon Sep 17 00:00:00 2001 -From: Yegor Timoshenko <yegortimoshenko@riseup.net> -Date: Fri, 28 Sep 2018 03:27:04 +0000 -Subject: [PATCH] If root is in Nix store, set ETag to its path hash - ---- - src/http/ngx_http_core_module.c | 56 +++++++++++++++++++++++++++++---- - 1 file changed, 50 insertions(+), 6 deletions(-) +This patch makes it possible to serve static content from Nix store paths, by +using the hash of the store path for the ETag header. diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c -index c57ec00c..b7992de2 100644 +index cb49ef74..f88dc77c 100644 --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -1583,6 +1583,7 @@ ngx_http_set_etag(ngx_http_request_t *r) @@ -19,7 +13,7 @@ index c57ec00c..b7992de2 100644 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); -@@ -1598,16 +1599,61 @@ ngx_http_set_etag(ngx_http_request_t *r) +@@ -1598,16 +1599,62 @@ ngx_http_set_etag(ngx_http_request_t *r) etag->hash = 1; ngx_str_set(&etag->key, "ETag"); @@ -68,6 +62,7 @@ index c57ec00c..b7992de2 100644 + } + + ngx_memcpy(etag->value.data, ptr1, etag->value.len); ++ ngx_http_clear_last_modified(r); + } else { + etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3); + @@ -87,6 +82,3 @@ index c57ec00c..b7992de2 100644 r->headers_out.etag = etag; --- -2.19.0 - |