我有一个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
。。。