413:推到Nginx后面的Mercurial存储库时全力以赴

时间:2013-02-14 18:58:51

标签: mercurial nginx

我有一个运行在Scm-manager上的Mercurial存储库代理了Nginx。各种较小的存储库运行良好,因此基本设置似乎没问题。

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

但是,当我第一次尝试推送一个大型Mercurial存储库时(1007次提交,而该系统中其他最大的存储库为80次),我得到以下结果:

abort:HTTP错误413:FULL head

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

我遇到的另一件事是large_client_header_buffers。我已经在服务器和http级别上设置了疯狂的巨大值,例如“64 128k”(读一些关于它的服务器不能正常工作),但这并没有改变任何东西。

我也查看了scm-manager日志但看不到任何内容,所以这似乎停止了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;
  }
}

2 个答案:

答案 0 :(得分:2)

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

取代:

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

使用:

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

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

答案 1 :(得分:0)

我试图推动HTTP Error: 413 (Request Entity Too Large)。已解决为client_max_body_size 2M;添加/etc/nginx/nginx.conf。想知道1000M是否不超过client_max_body_size ...