Ich bin neu bei nginx
und lua
. Ich versuche, diesem Tutorial zu folgenhttp://leafo.net/posts/creating_an_image_server.html#installation_requirementsaber ich kriege es beim besten Willen nicht hin nginx.conf
.
Ich habe andere Fragen ähnlich überprüftDaswo das Problem liegt location
, aber ich kann nicht erkennen, was mit meinem Code nicht stimmt.
Hier ist das 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;
}
}
}
Und das ist der serve_image.lua
Code
local sig, size, path, ext =
ngx.var.sig, ngx.var.size, ngx.var.path, ngx.var.ext local images_dir = "images/" – woher die Bilder kommen local cache_dir = "cache/" – wo die Bilder zwischengespeichert werden
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)
Wenn ich den Server starte, erhalte ich den Code 500.
Dies ist der Fehler im 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"
Ich hoffe, dass ein erfahreneres und frischeres Paar Augen mir sagen kann, was ich falsch mache. Danke.