【问题标题】:413: FULL head when pushing to Mercurial repository behind Nginx413:推到 Nginx 后面的 Mercurial 存储库时全头
【发布时间】:2013-02-14 18:58:51
【问题描述】:

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

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

但是,当我第一次尝试推送大型 Mercurial 存储库时(1007 次提交,而该系统上另一个最大的提交约为 80 次),我得到以下信息:

中止:HTTP 错误 413:全头

我读过的关于 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;
  }
}

【问题讨论】:

    标签: mercurial nginx


    【解决方案1】:

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

    替换:

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

    与:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多