From 300049ca51522a8d74ae5125871e7f85a9eb114e Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Wed, 12 Aug 2020 18:09:02 +0200 Subject: [PATCH] nixos/nginx: move configuration testing script into reload command nginx -t not only verifies configuration, but also creates (and chowns) files. When the `nginx-config-reload` service is used, this can cause directories to be chowned to `root`, causing nginx to fail. This moves the nginx -t command into a second ExecReload command, which runs as nginx's user. While fixing above issue, this will also cause the configuration to be verified when running `systemctl reload nginx`, not only when restarting the dummy `nginx-config-reload` unit. The latter is mostly a workaround for missing features in our activation script anyways. --- nixos/modules/services/web-servers/nginx/default.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 4c4b7f39e6b..461888c4cc4 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -704,7 +704,10 @@ in ''; serviceConfig = { ExecStart = execCommand; - ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + ExecReload = [ + "${execCommand} -t" + "${pkgs.coreutils}/bin/kill -HUP $MAINPID" + ]; Restart = "always"; RestartSec = "10s"; StartLimitInterval = "1min"; @@ -761,8 +764,7 @@ in serviceConfig.TimeoutSec = 60; script = '' if /run/current-system/systemd/bin/systemctl -q is-active nginx.service ; then - ${execCommand} -t && \ - /run/current-system/systemd/bin/systemctl reload nginx.service + /run/current-system/systemd/bin/systemctl reload nginx.service fi ''; serviceConfig.RemainAfterExit = true;