Subject: [bug#71673] [PATCH v2] services: nginx: Print extra-content before the server-blocks.

From: Tomas Volf <[email-masked]>
Date: Sun, 6 Oct 2024 17:40:14 +0200

The configuration file is processed sequentially, which meant that there was
no way to set for example log format shared between the server-blocks, because
the final configuration file would have this order:

  ...
  http {
    ...
    server {
    }
    ...
    $extra-content
  }

Moving the extra-content before the serialization of server-blocks resolves
this.

* gnu/services/web.scm (default-nginx-config): Move extra-content before
server-blocks.

Change-Id: Ie8286a533dfed575abc58a0f4800706b3ad6adc2
---
Rebase on latest master.

 gnu/services/web.scm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index cc6f4e6d9b..84ce88aa80 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -770,10 +770,7 @@ (define (default-nginx-config config)
                 (number->string server-names-hash-bucket-max-size)
                 ";\n")
                "")
-           "\n"
-           (map emit-nginx-upstream-config upstream-blocks)
-           (map emit-nginx-server-config server-blocks)
-           (match extra-content
+	   (match extra-content
              ((? list? extra-content)
               (map (lambda (line)
                      `("    " ,line "\n"))
@@ -781,7 +778,10 @@ (define (default-nginx-config config)
              ;; XXX: For compatibility strings and gexp's are inserted
              ;; directly.
              (_ extra-content))
-           "\n}\n"))))
+           "\n"
+           (map emit-nginx-upstream-config upstream-blocks)
+           (map emit-nginx-server-config server-blocks)
+           "}\n"))))

 (define %nginx-accounts
   (list (user-group (name "nginx") (system? #t))
--
2.46.0