modules: services: nginx: add 'redirect' option

This commit is contained in:
Bruno BELANYI 2023-03-16 21:30:47 +01:00
parent 05973b93ff
commit b3d90be8b1

View file

@ -26,6 +26,15 @@ let
''; '';
}; };
redirect = mkOption {
type = with types; nullOr str;
default = null;
example = "https://example.com";
description = ''
Which domain to redirect to (301 response), for this virtual host.
'';
};
root = mkOption { root = mkOption {
type = with types; nullOr path; type = with types; nullOr path;
default = null; default = null;
@ -176,7 +185,7 @@ in
assertions = [ ] assertions = [ ]
++ (lib.flip builtins.map cfg.virtualHosts ({ subdomain, ... } @ args: ++ (lib.flip builtins.map cfg.virtualHosts ({ subdomain, ... } @ args:
let let
conflicts = [ "port" "root" ]; conflicts = [ "port" "root" "redirect" ];
optionsNotNull = builtins.map (v: args.${v} != null) conflicts; optionsNotNull = builtins.map (v: args.${v} != null) conflicts;
optionsSet = lib.filter lib.id optionsNotNull; optionsSet = lib.filter lib.id optionsNotNull;
in in
@ -249,6 +258,10 @@ in
(lib.optionalAttrs (args.root != null) { (lib.optionalAttrs (args.root != null) {
inherit (args) root; inherit (args) root;
}) })
# Redirect to a different domain
(lib.optionalAttrs (args.redirect != null) {
locations."/".return = "301 ${args.redirect}$request_uri";
})
# VHost specific configuration # VHost specific configuration
args.extraConfig args.extraConfig
# SSO configuration # SSO configuration