413:当推到Nginx后面的Mercurial存储库时,头部已满



我有一个Mercurial存储库,运行在Nginx后面的Scm管理器上。各种较小的存储库运行良好,所以基本设置似乎还可以

此外,这个框运行Owncloud。我已经将服务器上的client_max_body_size调整为1000M,以便可以传输大文件。这是可行的,我有各种各样的大文件在服务器和客户端之间同步。

然而,当我第一次尝试推送一个大型Mercurial存储库时(1007次提交,而这个系统上另一个最大的大约80次),我得到了以下结果:

中止:HTTP错误413:全头

我读到的关于413个错误的所有内容似乎都不适用。首先,它建议将机身尺寸设置为1G。接下来,这似乎适用于标头太大,这是有道理的,因为它可能试图在远程存储库中检查1000多个修订。

我遇到的另一件事是large_client_header_buffers。我在服务器和http级别上都设置了非常大的值,比如"64 128k"(读到一些关于它在服务器上不工作的信息),但这并没有改变任何事情。

我也查看了scm管理器日志,但什么也没看到,所以这似乎与Nginx有关。

想法?以下是我的Nginx服务器配置的一部分:

server {
  server_name thewordnerd.info;
  listen 443 ssl;
  ssl_certificate /etc/ssl/certs/thewordnerd.info.crt;
  ssl_certificate_key /etc/ssl/private/thewordnerd.info.key;
  root /srv/www/thewordnerd.info/public;
  client_max_body_size 1000M;
  location /scm {
    proxy_pass      http://127.0.0.1:8080/scm;
    include         /etc/nginx/proxy_params;
  }
}

问题是应用程序服务器的头缓冲区,这是因为mercurial使用了非常大的头。您必须增加标头缓冲区的大小,并且此应用程序服务器是特定的。如果您使用的是独立版本,则必须编辑server-config.xml并增加requestHeaderSize值。

替换:

<Set name="requestHeaderSize">16384</Set>

带有:

<Set name="requestHeaderSize">32768</Set>

来源:https://groups.google.com/forum/#!topic/smmanager/Afad4zXSx78

我尝试推送时有HTTP Error: 413 (Request Entity Too Large)。通过将client_max_body_size 2M;添加到/etc/nginx/nginx.conf来解决。想知道1000M是否没有超过client_max_body_size。。。

最新更新