diff options
author | Franz Pletz <fpletz@fnordicwalking.de> | 2023-04-06 02:52:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-06 02:52:44 +0200 |
commit | 0e950a1ec78f8ef1f7bcce6b999c03a62bd3e796 (patch) | |
tree | 1764e041b903f15c127bed12055b6932c48b5139 /nixos/modules/services/web-servers/nginx/default.nix | |
parent | 127fd8170e3b734f5c84aec62687429fcc070a00 (diff) | |
parent | 8a289bcc79950439935b830eaf7f1a533f124254 (diff) | |
download | nixlib-0e950a1ec78f8ef1f7bcce6b999c03a62bd3e796.tar nixlib-0e950a1ec78f8ef1f7bcce6b999c03a62bd3e796.tar.gz nixlib-0e950a1ec78f8ef1f7bcce6b999c03a62bd3e796.tar.bz2 nixlib-0e950a1ec78f8ef1f7bcce6b999c03a62bd3e796.tar.lz nixlib-0e950a1ec78f8ef1f7bcce6b999c03a62bd3e796.tar.xz nixlib-0e950a1ec78f8ef1f7bcce6b999c03a62bd3e796.tar.zst nixlib-0e950a1ec78f8ef1f7bcce6b999c03a62bd3e796.zip |
Merge pull request #223085 from Izorkin/update-nginx-proxy-cache
nixos/nginx: enable multiple proxyCachePath support
Diffstat (limited to 'nixos/modules/services/web-servers/nginx/default.nix')
-rw-r--r-- | nixos/modules/services/web-servers/nginx/default.nix | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index f2cf7a28b118..02b173b1e957 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -102,6 +102,17 @@ let proxy_set_header X-Forwarded-Server $host; ''; + proxyCachePathConfig = concatStringsSep "\n" (mapAttrsToList (name: proxyCachePath: '' + proxy_cache_path ${concatStringsSep " " [ + "/var/cache/nginx/${name}" + "keys_zone=${proxyCachePath.keysZoneName}:${proxyCachePath.keysZoneSize}" + "levels=${proxyCachePath.levels}" + "use_temp_path=${if proxyCachePath.useTempPath then "on" else "off"}" + "inactive=${proxyCachePath.inactive}" + "max_size=${proxyCachePath.maxSize}" + ]}; + '') (filterAttrs (name: conf: conf.enable) cfg.proxyCachePath)); + upstreamConfig = toString (flip mapAttrsToList cfg.upstreams (name: upstream: '' upstream ${name} { ${toString (flip mapAttrsToList upstream.servers (name: server: '' @@ -241,16 +252,10 @@ let server_tokens ${if cfg.serverTokens then "on" else "off"}; - ${optionalString cfg.proxyCache.enable '' - proxy_cache_path /var/cache/nginx keys_zone=${cfg.proxyCache.keysZoneName}:${cfg.proxyCache.keysZoneSize} - levels=${cfg.proxyCache.levels} - use_temp_path=${if cfg.proxyCache.useTempPath then "on" else "off"} - inactive=${cfg.proxyCache.inactive} - max_size=${cfg.proxyCache.maxSize}; - ''} - ${cfg.commonHttpConfig} + ${proxyCachePathConfig} + ${vhosts} ${optionalString cfg.statusPage '' @@ -808,10 +813,10 @@ in ''; }; - proxyCache = mkOption { - type = types.submodule { + proxyCachePath = mkOption { + type = types.attrsOf (types.submodule ({ ... }: { options = { - enable = mkEnableOption (lib.mdDoc "Enable proxy cache"); + enable = mkEnableOption (lib.mdDoc "this proxy cache path entry"); keysZoneName = mkOption { type = types.str; @@ -869,9 +874,12 @@ in description = lib.mdDoc "Set maximum cache size"; }; }; - }; + })); default = {}; - description = lib.mdDoc "Configure proxy cache"; + description = lib.mdDoc '' + Configure a proxy cache path entry. + See <http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path> for documentation. + ''; }; resolver = mkOption { @@ -982,6 +990,12 @@ in The Nginx log directory has been moved to /var/log/nginx, the cache directory to /var/cache/nginx. The option services.nginx.stateDir has been removed. '') + (mkRenamedOptionModule [ "services" "nginx" "proxyCache" "inactive" ] [ "services" "nginx" "proxyCachePath" "" "inactive" ]) + (mkRenamedOptionModule [ "services" "nginx" "proxyCache" "useTempPath" ] [ "services" "nginx" "proxyCachePath" "" "useTempPath" ]) + (mkRenamedOptionModule [ "services" "nginx" "proxyCache" "levels" ] [ "services" "nginx" "proxyCachePath" "" "levels" ]) + (mkRenamedOptionModule [ "services" "nginx" "proxyCache" "keysZoneSize" ] [ "services" "nginx" "proxyCachePath" "" "keysZoneSize" ]) + (mkRenamedOptionModule [ "services" "nginx" "proxyCache" "keysZoneName" ] [ "services" "nginx" "proxyCachePath" "" "keysZoneName" ]) + (mkRenamedOptionModule [ "services" "nginx" "proxyCache" "enable" ] [ "services" "nginx" "proxyCachePath" "" "enable" ]) ]; config = mkIf cfg.enable { |