0

我正在使用代理脚本(位于此处),它用于两步结帐(客户将他们的账单信息放在第 1 步,点击“下一步”,然后将付款信息放在第 2 步)。

当他们在步骤 1 中单击“下一步”时,代理脚本会接受PUT带有他们输入数据的请求,然后将所有数据发送到第 3 方服务(购物车)。

问题是,在第 1 步单击提交时,出现413 Request entity too large错误。

我花了很多时间确保 Nginx 配置正确(肯定是这样)。这是 PHP 脚本中的某些东西,它以某种方式错误地触发了413. 我不是 PHP 专家,但这是我唯一能想到的。

以下是我认为不是 Nginx 配置本身的一些原因:

  • 请求只有大约 10kb
  • 如果我删除 PHP 文件中的所有内容,则PUT数据非常好。只有上面的这个脚本以某种方式触发它。
  • 我已经设置了所有必要的 PHP 变量(我相信其中有 4 个)。全部设置为128M
  • client_max_body_size正确设置为32M

这是我知道它不是第 3 方服务器的原因

  • 它在 apache 上运行良好
  • 许多其他人(在 apache 上)正在成功使用它

非常简单的一键下载自己尝试(如果你喜欢的话)

如果你想修改它,下载 zip,然后上传到 nginx 服务器:

您无需进行任何更改。只需上传、访问trial-page1.html并单击大Order Now按钮。您将看到它将413错误记录到控制台。

我什至不知道如何调试这个,我认为这curl是使用方式的某种问题?

4

1 回答 1

1

没有什么特别针对这个问题的 nginx - 您正在添加重复的标头...特别是,两个 Content-Length 标头:一个在您的foreach ($_SERVER as $i => $val) { ... }循环中,一个明确在$header[] = "Content-Type: " . $content_type;

此要点可对您的脚本进行一些小的修改;请注意,它只触及了这个脚本错误的表面,即使您愿意接受做一个 PHP 代理是一个好主意开始......

于 2013-09-18T03:10:00.800 回答