Reescrita Nginx com sabor de Lua ou ciclo de redirecionamento interno

Reescrita Nginx com sabor de Lua ou ciclo de redirecionamento interno

Eu sou novo em nginxe lua. Estou tentando seguir este tutorialhttp://leafo.net/posts/creating_an_image_server.html#installation_requirementsmas pela minha vida não consigo acertar nginx.conf.

Eu verifiquei outras perguntas semelhantes aesseonde está o problema location, mas não consigo ver o que há de errado com meu código.

Aqui está o nginx.conf:

error_log stderr notice;
daemon off;

events { }

http {
  include /usr/local/openresty/nginx/conf/mime.types;

  server {
    listen 6789;
    lua_code_cache on;

    location @image_server {
      content_by_lua_file "serve_image.lua";
    }

    location ~ ^/images/(?<size>[^/]+)/(?<path>.*\.(?<ext>[a-z_]*))$ {
      root cache;
      try_files /$path @image_server;
    }

  }
}

E este é o serve_image.luacódigo

local sig, size, path, ext =

ngx.var.sig, ngx.var.size, ngx.var.path, ngx.var.ext local images_dir = "images/" - onde as imagens vêm do local cache_dir = "cache/" - onde as imagens são armazenadas em cache

local function return_not_found(msg)
  ngx.status = ngx.HTTP_NOT_FOUND
  ngx.header["Content-type"] = "text/html"
  ngx.say(msg or "not found")
  ngx.exit(0)
end

local source_fname = images_dir .. path
ngx.log(ngx.STDERR, "->>>>  " .. source_fname)

-- make sure the file exists
local file = io.open(source_fname)

if not file then
  ngx.log(ngx.STDERR, "Couldn't find the input file" .. source_fname)
  return_not_found()
end

file:close()

local dest_fname = cache_dir .. "/" .. size .. "/" .. path

-- resize the image
local magick = require("magick")
magick.thumb(source_fname, size, dest_fname)

ngx.exec(ngx.var.request_uri)

Quando executo o servidor, recebo um código 500.

Este é o erro no terminal

rewrite or internal redirection cycle while redirect to named location "@image_server", client: 127.0.0.1, server: , request: "GET /images/80x80/wow.png HTTP/1.1", host: "localhost:6789"

Espero que um par de olhos mais experientes e novos possa apontar o que estou fazendo de errado. Obrigado.

informação relacionada