Хочу возложить логику проверки jwt на плечи nginx:
https://github.com/auth0/nginx-jwt
Сервер имеет следующую конфигурацию:
server {
listen 80;
server_name test;
location / {
access_by_lua '
local jwt = require("nginx-jwt")
jwt.auth()
';
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:1338;
}
}
В nginx.conf указал расположение lua-скриптов:
lua_package_path "/opt/test/?.lua;;";
Перезагружаю nginx, обращаюсь по http:
$ curl test
2016/09/27 15:01:57 [error] 25541#0: *399 lua entry thread aborted: runtime error: /opt/test/resty/evp.lua:4: module 'ffi' not found:
На Lua не кодил. Выяснилось, что есть две среды исполнения Lua: это собственно lua и luajit. Выяснилось, что ffi модуль - это какая-то штука с возможностью исполнения Си кода, и исполняется только посредством luajit. В моем случае скрипты выполняются посредством lua, и это завершается такой вот ошибкой (проверял в REPL).
Вопрос - как сделать так, чтобы nginx запускал эти скрипты посредством luaJIT ? Уже все излазил. Поставил OpenResty дистрибутив, собрал, установил - эффекта нет. Что делать?