Ich brauche https://github.com/openresty/lua-nginx-moduleWie zu Nginx fastcgi_pass innerhalb ngx_http_lua_module übergeben?
ich eine Nginx Variable auf meine PHP 7.0-Backend mit der ausgezeichneten Bibliothek passieren bevorzugen content_by_lua_block
statt set_by_lua_block
, zu verwenden, da die Dokumentation für die ‚Set‘ Funktion heißt es: „Diese Richtlinie kurz auszuführen ausgelegt ist schnell laufende Codebausteine, da die Nginx-Ereignisschleife während der Codeausführung blockiert wird. Zeitaufwendige Codefolgen sollten daher vermieden werden. " https://github.com/openresty/lua-nginx-module#set_by_lua
Da jedoch die ‚content _...‘ Funktion ist nicht blockierend, der folgende Code nicht rechtzeitig zurückkehren, und $ Hallo ungesetzt ist, wenn an PHP übergeben:
location ~ \.php{
set $hello '';
content_by_lua_block {
ngx.var.hello = "hello there.";
}
fastcgi_param HELLO $hello;
include fastcgi_params;
...
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
Das Problem ist, hat mein Lua-Code das Potenzial, "zeitaufwendige Codefolgen" zu sein, wenn bestimmte Codepfade verwendet werden, zum Beispiel mit Crypto.
Die folgende Nginx Lage funktioniert ganz gut, aber das ist, weil set_by_lua_block() ein blockierende Funktionsaufruf:
location ~ \.php {
set $hello '';
set_by_lua_block $hello {
return "hello there.";
}
fastcgi_param HELLO $hello;
include fastcgi_params;
...
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
Meine Frage ist, was ist der beste hier Ansatz? Gibt es eine Möglichkeit, die Nginx-Direktive fastcgi_pass
und zugehörige Direktiven nur innerhalb eines content_by_lua_block() aufzurufen, nachdem meine Variablen gesetzt wurden?
Das neue 'default_type' in der Nginx conf ändert sich von' application/octet-Stream' zu 'Text/html, weil wir ngx.say() verwenden, um den von PHP zurückgegebenen HTML-Code anzuzeigen. – AaronDanielson