私は「設定」機能のドキュメントは、このディレクティブは短い実行するように設計された」と述べので、私は、content_by_lua_block
代わりのset_by_lua_block
を使用することを好む優れたライブラリにhttps://github.com/openresty/lua-nginx-modulengx_http_lua_module内のNginx fastcgi_passに渡す方法は?
を使用して、私のPHP 7.0のバックエンドにnginxの変数を渡す必要がありますコード実行中にNginxイベントループとしての高速実行コードブロックがブロックされるため、時間がかかるコードシーケンスは避ける必要があります。 " https://github.com/openresty/lua-nginx-module#set_by_lua
しかし、「コンテンツ_...」関数はノンブロッキングであることから、次のコードが時間内に戻らないと、PHPに渡されたとき$ハローが設定されていない:
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;
}
問題例えば、暗号を使用して、特定のコードパスが使用される場合、私のLuaコードは "時間がかかるコードシーケンス"になる可能性があります。
次のnginxの場所
はうまく動作しますが、set_by_lua_block()はブロッキング関数呼び出しであるためです。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;
}
私の質問があり、ここでの最善のアプローチは何ですか?変数が設定された後でなければ、Nginxディレクティブfastcgi_pass
と関連ディレクティブをcontent_by_lua_block()内から呼び出す方法はありますか?
nginxのconfの中に新しい 'default_type'はテキスト'にアプリケーション/オクテットstream' 'から変更されます/ html'はPHPが返すHTMLを表示するためにngx.say()を使用しているためです。 – AaronDanielson