From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59931) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dxcGF-0005Dg-Vx for guix-patches@gnu.org; Thu, 28 Sep 2017 13:06:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dxcGA-0006bH-5n for guix-patches@gnu.org; Thu, 28 Sep 2017 13:06:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:56554) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dxcGA-0006ag-0s for guix-patches@gnu.org; Thu, 28 Sep 2017 13:06:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dxcG9-0008K0-KC for guix-patches@gnu.org; Thu, 28 Sep 2017 13:06:01 -0400 Subject: [bug#28560] [PATCH] web: Add try-files for the nginx-service-type. Resent-Message-ID: From: Oleg Pykhalov References: <874lruckq8.fsf@gmail.com> <87k20prshw.fsf@gmail.com> <87h8vtrrlz.fsf@gmail.com> <87d16hrpdq.fsf@gmail.com> <72986E30-EF66-44C3-AAEC-718F0CAD19D4@lepiller.eu> <87fubcynmx.fsf@gmail.com> <67F0DB51-4862-4965-B467-DB517FB3F348@lepiller.eu> Date: Thu, 28 Sep 2017 20:04:53 +0300 In-Reply-To: <67F0DB51-4862-4965-B467-DB517FB3F348@lepiller.eu> (Julien Lepiller's message of "Tue, 26 Sep 2017 09:53:52 +0200") Message-ID: <873776sqiy.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Julien Lepiller Cc: 28560@debbugs.gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Julien, Julien Lepiller writes: > I'm not sure about the last part of your sentence, do we explain what > the "current context" is? No we didn't. And I don't see any =E2=80=98context=E2=80=99 mention in =E2= =80=98@subsubsection Web Services=E2=80=99. > Is it even relevant? Probably not relevant. > Could you add a sentence to explain the usage of variables here, such > as "$uri"? Maybe a small example would be enough. Sure. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-web-Add-try-files-for-the-nginx-service-type.patch >From 783d1c22dfda8d1a86c0a01683ebe1278e44c3bd Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Sat, 23 Sep 2017 03:27:49 +0300 Subject: [PATCH] web: Add try-files for the nginx-service-type. * gnu/services/web.scm (): Add nginx-server-configuration-try-files. (emit-nginx-server-config): Add this. * doc/guix.texi (Web Services): Add this. --- doc/guix.texi | 7 ++++++- gnu/services/web.scm | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index dd0a46a63..1b329d255 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -14263,7 +14263,8 @@ blocks, as in this example: (https-port #f) (ssl-certificate #f) (ssl-certificate-key #f) - (root "/srv/http/extra-website")))) + (root "/srv/http/extra-website") + (try-files (list "$uri" "$uri/index.html"))))) @end example @end deffn @@ -14394,6 +14395,10 @@ server block. Index files to look for when clients ask for a directory. If it cannot be found, Nginx will send the list of files in the directory. +@item @code{try-files} (default: @code{'()}) +A list of files whose existence is checked in the specified order. +@code{nginx} will use the first file it finds to process the request. + @item @code{ssl-certificate} (default: @code{"/etc/nginx/cert.pem"}) Where to find the certificate for secure connections. Set it to @code{#f} if you don't have a certificate or you don't want to use HTTPS. diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 4aa6fd501..9d713003c 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -99,6 +99,8 @@ (default '())) (index nginx-server-configuration-index (default (list "index.html"))) + (try-files nginx-server-configuration-try-files + (default '())) (ssl-certificate nginx-server-configuration-ssl-certificate (default "/etc/nginx/cert.pem")) (ssl-certificate-key nginx-server-configuration-ssl-certificate-key @@ -179,6 +181,7 @@ of index files." (nginx-server-configuration-ssl-certificate-key server)) (root (nginx-server-configuration-root server)) (index (nginx-server-configuration-index server)) + (try-files (nginx-server-configuration-try-files server)) (server-tokens? (nginx-server-configuration-server-tokens? server)) (locations (nginx-server-configuration-locations server))) (define-syntax-parameter <> (syntax-rules ())) @@ -207,6 +210,9 @@ of index files." (and/l ssl-certificate-key " ssl_certificate_key " <> ";\n") " root " root ";\n" " index " (config-index-strings index) ";\n" + (if (not (nil? try-files)) + (and/l (config-index-strings try-files) " try_files " <> ";\n") + "") " server_tokens " (if server-tokens? "on" "off") ";\n" "\n" (map emit-nginx-location-config locations) -- 2.14.1 --=-=-=--