1

埋め込み perl (nginx-perl を使用) または lua (埋め込み lua モジュールを使用) から nginx アップロード モジュールの結果にアクセスする方法を理解しようとしています。モジュールを fastcgi (または類似のもの) で使用する方法の例しか見つけることができませんでした。可能であれば、使用する必要はありません。

upload_pass に lua/perl コンテンツ ハンドラを持たせるだけではうまくいかないようです。本文は何とか最初の行だけに切り詰められています (はい、本文を待つように指示し、ファイルに書き込まれないようにしました)。

少なくとも Perl を使用している場合 (Lua は試していませんが、同じことが起こるのではないかと推測しています)、別の nginx インスタンスに proxy_pass を実行すると、完全なボディ (生の multipart/form-data として) を利用できるようになります。 .

私の質問は 3 つあります。まず、これは予想される動作ですか/アップロードモジュールから引数がどのように渡されますか? 次に、コンテンツ ハンドラで perl/lua ライブラリを使用して multipart/form-data を (再) 解析せずに、アップロード モジュールの結果にアクセスすることは可能ですか。

最後に、後者が不可能な場合は、関数を手動でエクスポートしたり、何らかの形式の FFI を使用したりせずに、nginx/upload で使用される multipart/form-data パーサーを使用できますか。

前もって感謝します。

4

1 に答える 1

0

lua を使用すると、次のような方法で通常のパラメーターを取得できます。

ngx.req.read_body()
local inputjson = ngx.req.get_body_data()

文書化された投稿引数: http://wiki.nginx.org/HttpLuaModule#ngx.req.get_post_args

通常の変数:

ngx.var.my_var

Lua nginx モジュールには、これが十分に文書化されています: http://wiki.nginx.org/HttpLuaModule

アップロード モジュールについて文書化されている変数: http://www.grid.net.ru/nginx/upload.en.html

upload_set_form_field $upload_field_name.name "$upload_file_name";
upload_set_form_field $upload_field_name.content_type "$upload_content_type";
upload_set_form_field $upload_field_name.path "$upload_tmp_path";

次の方法でアクセスできる必要があります。

ngx.var.upload_field_name.path

確認するには、var でログまたは印刷を実行するだけです

于 2012-06-16T21:53:25.223 に答える