summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
authoraszlig <aszlig@nix.build>2020-01-02 21:41:48 +0100
committeraszlig <aszlig@nix.build>2020-01-02 21:41:59 +0100
commit845e92835d90d300142157c6bae9ca5b7831e2bd (patch)
tree527a5847441933e7cf8a61c253f08abbbe0e19f1 /pkgs/servers
parent129c73802fdddacb20cf194bd2968d73ebced590 (diff)
parentccf55bead1f3bc2a6419a9fdcec55933ffe046de (diff)
downloadnixpkgs-845e92835d90d300142157c6bae9ca5b7831e2bd.tar
nixpkgs-845e92835d90d300142157c6bae9ca5b7831e2bd.tar.gz
nixpkgs-845e92835d90d300142157c6bae9ca5b7831e2bd.tar.bz2
nixpkgs-845e92835d90d300142157c6bae9ca5b7831e2bd.tar.lz
nixpkgs-845e92835d90d300142157c6bae9ca5b7831e2bd.tar.xz
nixpkgs-845e92835d90d300142157c6bae9ca5b7831e2bd.tar.zst
nixpkgs-845e92835d90d300142157c6bae9ca5b7831e2bd.zip
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.patch18
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 9dec715bf6c..c1473ccdb1b 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
-