diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index b5ff630a4d48428..2c1be396902e20e 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -129,12 +129,9 @@ let '')); commonHttpConfig = '' - # Load mime types. + # Load mime types and configure maximum size of the types hash tables. include ${cfg.defaultMimeTypes}; - # When recommendedOptimisation is disabled nginx fails to start because the mailmap mime.types database - # contains 1026 entries and the default is only 1024. Setting to a higher number to remove the need to - # overwrite it because nginx does not allow duplicated settings. - types_hash_max_size 4096; + types_hash_max_size ${toString cfg.typesHashMaxSize}; include ${cfg.package}/conf/fastcgi.conf; include ${cfg.package}/conf/uwsgi_params; @@ -896,6 +893,22 @@ in ''; }; + typesHashMaxSize = mkOption { + type = types.ints.positive; + default = if cfg.defaultMimeTypes == "${pkgs.mailcap}/etc/nginx/mime.types" then 2688 else 1024; + defaultText = literalExpression "if cfg.defaultMimeTypes == "$''{pkgs.mailcap}/etc/nginx/mime.types" then 2688 else 1024"; + description = '' + Sets the maximum size of the types hash tables. + + When recommendedOptimisation is disabled nginx fails to start because the + mailmap mime.types database contains 1026 entries and the default is only + 1024. Setting to a higher number to remove the need to overwrite it because + nginx does not allow duplicated settings. + + It is recommended that the minimum size be used. + ''; + }; + proxyCachePath = mkOption { type = types.attrsOf (types.submodule ({ ... }: { options = {