0

私はプロキシ スクリプト (ここにあります) を使用しています。これは 2 段階のチェックアウト用です (顧客は請求情報をステップ 1 に入力し、[次へ] をクリックしてから、ステップ 2 に支払い情報を入力します)。

ステップ 1 で [次へ] をクリックすると、プロキシ スクリプトはPUT入力されたデータを含む要求を受け入れ、そのすべてをサード パーティのサービス (ショッピング カート) に送信します。

問題は、ステップ 1 で送信をクリックすると413 Request entity too largeエラーが発生することです。

Nginxが適切に構成されていることを確認するのに多くの時間を費やしました(間違いなくそうです)。これは、どういうわけか誤って413. 私は PHP の専門家ではありませんが、思いつくのはこれだけです。

Nginx構成自体ではないと私が信じるいくつかの理由を次に示します。

  • リクエストはわずか約10kbです
  • PHPファイル内のすべてを削除するとPUT、データは完全に問題ありません。上記のこのスクリプトだけが何らかの形でそれを引き起こしています。
  • 必要なすべての PHP 変数が設定されています (4 つあったと思います)。すべてに設定されています128M
  • client_max_body_sizeに適切に設定されています32M

サードパーティのサーバーではないことがわかっている理由は次のとおりです

  • Apacheで問題なく動作します
  • 他の多くの人々(apache上)がそれをうまく使っています

非常にシンプルなワンクリックでダウンロードして、自分で試してみてください(気が向いたら)

それをいじりたい場合は、zip をダウンロードして、nginx サーバーにアップロードします。

変更を加える必要はありません。アップロードしてアクセスtrial-page1.htmlし、大きなOrder Nowボタンをクリックするだけです。413エラーがコンソールに記録されることがわかります。

これをデバッグする方法さえわかりませんcurl。使用方法に何らかの問題があると思いますか?

4

1 に答える 1

1

この問題について特にnginx固有のものはありません-重複したヘッダーを追加しています...具体的には、2つの Content-Length ヘッダー: 1つはforeach ($_SERVER as $i => $val) { ... }ループに、もう1つは明示的に$header[] = "Content-Type: " . $content_type;

この gistでは、スクリプトへのいくつかの小さな変更を利用できます。PHPプロキシを実行することが最初から良い考えであることを受け入れても構わないと思っていても、このスクリプトの問題点の表面をなぞるだけであることに注意してください...

于 2013-09-18T03:10:00.800 に答える