Next: Musikserver med Bluetooth-ljud, Previous: Att få ersättningar från Tor, Up: Systemkonfiguration [Contents][Index]
NGINX could be extended with Lua scripts.
Guix provides NGINX service with ability to load Lua module and specific Lua packages, and reply to requests by evaluating Lua scripts.
The following example demonstrates system definition with configuration to evaluate index.lua Lua script on HTTP request to http://localhost/hello endpoint:
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 "/hello") (body (list #~(format #f "content_by_lua_file ~s;" #$(local-file "index.lua"))))))))))))))