nginx: Verify that configuration is syntactically correct (#17208)

This commit is contained in:
Robin Lambertz 2016-07-27 22:24:08 +02:00 committed by Rok Garbas
parent 48829c7828
commit 103805dec5

View File

@ -5,7 +5,7 @@ with lib;
let let
cfg = config.services.nginx; cfg = config.services.nginx;
nginx = cfg.package; nginx = cfg.package;
configFile = pkgs.writeText "nginx.conf" '' configFileText = ''
user ${cfg.user} ${cfg.group}; user ${cfg.user} ${cfg.group};
daemon off; daemon off;
@ -19,6 +19,17 @@ let
''} ''}
${cfg.appendConfig} ${cfg.appendConfig}
''; '';
configFile = pkgs.runCommand "nginx.conf" {
text = configFileText;
passAsFile = ["text"];
preferLocalBuild = true;
allowSubstitutes = false;
} ''
mkdir -p "$(dirname "$out")"
mv "$textPath" "$out"
(${nginx}/bin/nginx -t -c "$out" -p ${cfg.stateDir} || true) 2>&1 | grep -q 'syntax is ok'
'';
in in
{ {
@ -91,8 +102,6 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
# TODO: test user supplied config file pases syntax test
systemd.services.nginx = { systemd.services.nginx = {
description = "Nginx Web Server"; description = "Nginx Web Server";
after = [ "network.target" ]; after = [ "network.target" ];