Next: , Previous: , Up: Nastavenie systému   [Contents][Index]


3.12 Nastavenia NGINX a Lua

NGINX možno rozšíriť pomocou Lua skriptov.

Guix poskytuje NGINX službu so schopnosťou načítať Lua moduly a určité Lua balíky ako aj odpovedať na požiadavky vyhodnocovaním Lua skriptov.

Nasledovný príklad znázorňuje zadanie systému s nastavením, ktoré vyhodnotí Lua skript index.lua pri HTTP požiadavke na koncový bod http://localhost/ahoj:

local shell = require "resty.shell"

local stdin = ""
local timeout = 1000  -- ms
local max_size = 4096  -- byte

local ok, stdout, stderr, reason, status =
   shell.run([[/run/current-system/profile/bin/ls /tmp]], stdin, timeout, max_size)

ngx.say(stdout)
(use-modules (gnu))
(use-service-modules #;… web)
(use-package-modules #;… lua)
(operating-system
  ;; …
  (services
   ;; …
   (service nginx-service-type
            (nginx-configuration
             (modules
              (list
               (file-append nginx-lua-module "/etc/nginx/modules/ngx_http_lua_module.so")))
             (lua-package-path (list lua-resty-core
                                     lua-resty-lrucache
                                     lua-resty-signal
                                     lua-tablepool
                                     lua-resty-shell))
             (lua-package-cpath (list lua-resty-signal))
             (server-blocks
              (list (nginx-server-configuration
                     (server-name '("localhost"))
                     (listen '("80"))
                     (root "/etc")
                     (locations (list
                                 (nginx-location-configuration
                                  (uri "/ahoj")
                                  (body (list #~(format #f "content_by_lua_file ~s;"
                                                        #$(local-file "index.lua"))))))))))))))