Browse Source

services/web: nginx-configuration: Add support for global directives.

* gnu/services/web.scm (<nginx-configuration>)[global-directives]: Add field.
(emit-global-directive): New procedure.
(default-nginx-config): Use it.
* doc/guix.texi (Web Services): Document it.
gn-latest-20200725
Ricardo Wurmus 2 years ago
parent
commit
b420e6deb9
No known key found for this signature in database GPG Key ID: 197A5888235FACAC
  1. 11
      doc/guix.texi
  2. 10
      gnu/services/web.scm

11
doc/guix.texi

@ -20272,6 +20272,17 @@ names of loadable modules, as in this example:
/etc/nginx/modules/ngx_http_accept_language_module.so")))
@end lisp
@item @code{global-directives} (default: @code{'()})
Association list of global directives for the top level of the nginx
configuration. Values may themselves be association lists.
@lisp
(global-directives
`((worker_processes . 16)
(pcre_jit . on)
(events . ((worker_connections . 1024)))))
@end lisp
@item @code{extra-content} (default: @code{""})
Extra content for the @code{http} block. Should be string or a string
valued G-expression.

10
gnu/services/web.scm

@ -529,6 +529,7 @@
(server-names-hash-bucket-max-size nginx-configuration-server-names-hash-bucket-max-size
(default #f))
(modules nginx-configuration-modules (default '()))
(global-directives nginx-configuration-global-directives (default '()))
(extra-content nginx-configuration-extra-content
(default ""))
(file nginx-configuration-file ;#f | string | file-like
@ -552,6 +553,13 @@ of index files."
(define (emit-load-module module)
(list "load_module " module ";\n"))
(define emit-global-directive
(match-lambda
((key . (? list? alist))
(format #f "~a { ~{~a~}}~%" key (map emit-global-directive alist)))
((key . value)
(format #f "~a ~a;~%" key value))))
(define emit-nginx-location-config
(match-lambda
(($ <nginx-location-configuration> uri body)
@ -626,12 +634,14 @@ of index files."
server-names-hash-bucket-size
server-names-hash-bucket-max-size
modules
global-directives
extra-content)
(apply mixed-text-file "nginx.conf"
(flatten
"user nginx nginx;\n"
"pid " run-directory "/pid;\n"
"error_log " log-directory "/error.log info;\n"
(map emit-global-directive global-directives)
(map emit-load-module modules)
"http {\n"
" client_body_temp_path " run-directory "/client_body_temp;\n"

Loading…
Cancel
Save