Merge pull request #213874 from SuperSandro2000/nginx-zstd

nixos/nginx: add recommendedZstdSettings
This commit is contained in:
Sandro 2023-03-23 14:11:35 +01:00 committed by GitHub
commit 995f9d1c95
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 2 deletions

View File

@ -184,8 +184,8 @@ let
brotli_types ${lib.concatStringsSep " " compressMimeTypes}; brotli_types ${lib.concatStringsSep " " compressMimeTypes};
''} ''}
# https://docs.nginx.com/nginx/admin-guide/web-server/compression/
${optionalString cfg.recommendedGzipSettings '' ${optionalString cfg.recommendedGzipSettings ''
# https://docs.nginx.com/nginx/admin-guide/web-server/compression/
gzip on; gzip on;
gzip_static on; gzip_static on;
gzip_vary on; gzip_vary on;
@ -195,6 +195,14 @@ let
gzip_types ${lib.concatStringsSep " " compressMimeTypes}; gzip_types ${lib.concatStringsSep " " compressMimeTypes};
''} ''}
${optionalString cfg.recommendedZstdSettings ''
zstd on;
zstd_comp_level 9;
zstd_min_length 256;
zstd_static on;
zstd_types ${lib.concatStringsSep " " compressMimeTypes};
''}
${optionalString cfg.recommendedProxySettings '' ${optionalString cfg.recommendedProxySettings ''
proxy_redirect off; proxy_redirect off;
proxy_connect_timeout ${cfg.proxyTimeout}; proxy_connect_timeout ${cfg.proxyTimeout};
@ -490,6 +498,16 @@ in
''; '';
}; };
recommendedZstdSettings = mkOption {
default = false;
type = types.bool;
description = lib.mdDoc ''
Enable recommended zstd settings. Learn more about compression in Zstd format [here](https://github.com/tokers/zstd-nginx-module).
This adds `pkgs.nginxModules.zstd` to `services.nginx.additionalModules`.
'';
};
proxyTimeout = mkOption { proxyTimeout = mkOption {
type = types.str; type = types.str;
default = "60s"; default = "60s";
@ -1015,7 +1033,8 @@ in
groups = config.users.groups; groups = config.users.groups;
}) dependentCertNames; }) dependentCertNames;
services.nginx.additionalModules = optional cfg.recommendedBrotliSettings pkgs.nginxModules.brotli; services.nginx.additionalModules = optional cfg.recommendedBrotliSettings pkgs.nginxModules.brotli
++ lib.optional cfg.recommendedZstdSettings pkgs.nginxModules.zstd;
systemd.services.nginx = { systemd.services.nginx = {
description = "Nginx Web Server"; description = "Nginx Web Server";

View File

@ -29,6 +29,7 @@
, which , which
, yajl , yajl
, zlib , zlib
, zstd
}: }:
let let
@ -666,6 +667,19 @@ let self = {
sha256 = "sha256-x4ry5ljPeJQY+7Mp04/xYIGf22d6Nee7CSqHezdK4gQ="; sha256 = "sha256-x4ry5ljPeJQY+7Mp04/xYIGf22d6Nee7CSqHezdK4gQ=";
}; };
}; };
zstd = {
name = "zstd";
src = fetchFromGitHub {
name = "zstd";
owner = "tokers";
repo = "zstd-nginx-module";
rev = "25d88c262be47462cf90015ee7ebf6317b6848f9";
sha256 = "sha256-YRluKekhx1tb6e5IL1FPK05jPtzfQPaHI47cdada928=";
};
inputs = [ zstd ];
};
}; in self // lib.optionalAttrs config.allowAliases { }; in self // lib.optionalAttrs config.allowAliases {
# deprecated or renamed packages # deprecated or renamed packages
modsecurity-nginx = self.modsecurity; modsecurity-nginx = self.modsecurity;