diff options
author | Christopher Baines <mail@cbaines.net> | 2017-01-18 08:08:07 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-01-19 14:44:59 +0100 |
commit | 9c557a69aebe49bba12009a01cfaabf88ec3f665 (patch) | |
tree | f03c3ab465fde7d50182f6cfb5c2e15afb6bdaa0 /gnu | |
parent | cb341293fa22cdbc4ffb869b9b2a94a0d8c8798b (diff) | |
download | gnu-guix-9c557a69aebe49bba12009a01cfaabf88ec3f665.tar gnu-guix-9c557a69aebe49bba12009a01cfaabf88ec3f665.tar.gz |
services: nginx: Add support for 'location' blocks.
* gnu/services/web.scm (<nginx-server-configuration>): Add field 'locations'.
(<nginx-location-configuration>): New record type.
(<nginx-named-location-configuration>): New record type.
(nginx-location-config): New function.
(default-nginx-server-config): Include locations.
* doc/guix.texi (Web Services): Document the new nginx-location-configuration
and nginx-named-location-configuration data types, as well as the changes to
the nginx-server-configuration.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/services/web.scm | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 1477bf88d6..ec308976d7 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -36,6 +36,10 @@ nginx-server-configuration? nginx-upstream-configuration nginx-upstream-configuration? + nginx-location-configuration + nginx-location-configuration? + nginx-named-location-configuration + nginx-named-location-configuration? nginx-service nginx-service-type)) @@ -56,6 +60,8 @@ (default (list 'default))) (root nginx-server-configuration-root (default "/srv/http")) + (locations nginx-server-configuration-locations + (default '())) (index nginx-server-configuration-index (default (list "index.html"))) (ssl-certificate nginx-server-configuration-ssl-certificate @@ -71,6 +77,20 @@ (name nginx-upstream-configuration-name) (servers nginx-upstream-configuration-servers)) +(define-record-type* <nginx-location-configuration> + nginx-location-configuration make-nginx-location-configuration + nginx-location-configuration? + (uri nginx-location-configuration-uri + (default #f)) + (body nginx-location-configuration-body)) + +(define-record-type* <nginx-named-location-configuration> + nginx-named-location-configuration make-nginx-named-location-configuration + nginx-named-location-configuration? + (name nginx-named-location-configuration-name + (default #f)) + (body nginx-named-location-configuration-body)) + (define-record-type* <nginx-configuration> nginx-configuration make-nginx-configuration nginx-configuration? @@ -98,6 +118,19 @@ of index files." ((? string? str) (string-append str " "))) names))) +(define nginx-location-config + (match-lambda + (($ <nginx-location-configuration> uri body) + (string-append + " location " uri " {\n" + " " (string-join body "\n ") "\n" + " }\n")) + (($ <nginx-named-location-configuration> name body) + (string-append + " location @" name " {\n" + " " (string-join body "\n ") "\n" + " }\n")))) + (define (default-nginx-server-config server) (string-append " server {\n" @@ -126,7 +159,11 @@ of index files." " index " (config-index-strings (nginx-server-configuration-index server)) ";\n" " server_tokens " (if (nginx-server-configuration-server-tokens? server) "on" "off") ";\n" - " }\n")) + "\n" + (string-join + (map nginx-location-config (nginx-server-configuration-locations server)) + "\n") + " }\n")) (define (nginx-upstream-config upstream) (string-append |