マスターの皆様、URL には GET リクエストと POST リクエストがあり、サービスパラメータの値を取得するために、URL 内のパラメータを決定する必要があります。 nginx+luaを使ってやりました。コードは次のとおりです:
リーリー現在の問題は、GET を使用してリクエストするとすべて正常ですが、POST を使用してリクエストすると Nginx が 500 エラーを報告することです。
デバッグには次のコードを使用します:
リーリーGETおよびPOSTリクエストメソッドで出力されるサービスパラメータの値は正しいです。
どこに問題があるのかわかりませんか?神様に教えてもらいましょう。感謝。 。 。
为情所困2017-05-16 17:18:40
set_by_lua を使用する場合、POST 送信の場合、ngx.req.read_body() を呼び出すときに、set_by_lua モジュール内の read_body の呼び出しが禁止されます (set_by_lua の実行に失敗しました: set_by_lua:6: API がコンテキストで無効になっています) set_by_lua の
スタック トレースバック: [C]: 関数 'read_body' set_by_lua:6: 関数 <set_by_lua:1>);
ただし、次のような rewrite_by_lua を使用できます:
location / {
また、変数名として $service を使用しないことをお勧めします。キーワードがシステム変数と競合する可能性があります。
phpcn_u15822017-05-16 17:18:40
元投稿者からアドバイスをお願いします。 ngx.req.get_post_args() が値を取得しないのに、ngx.req.get_body_data() が値を取得する理由はわかりません。何が原因でしょうか?
给我你的怀抱2017-05-16 17:18:40
ngx.req.get_post_args() は、rewrite_by_lua、access_by_lua、content_by_lua* ステージでのみ使用でき、使用する前に ngx.req.read_body() を呼び出すか、
lua_need_request_body オプションをオンにしてこのモジュールを強制する必要がありますリクエストの本文を読み取る (この方法は推奨されません)