1

Nginxの背後にプロキシされたScm-managerで実行されているMercurialリポジトリがあります。さまざまな小さなリポジトリが正常に動作するため、基本的な設定は問題ないようです。

さらに、この同じボックスでOwncloudが実行されます。サーバー上のclient_max_body_sizeを1000Mに調整して、大きなファイルを転送できるようにしました。これは機能し、サーバーとクライアント間でさまざまな大きなファイルを同期しています。

ただし、大きなMercurialリポジトリを初めてプッシュしようとすると(1007コミットに対して、このシステムの他の最大のリポジトリでは約80)、次のようになります。

中止:HTTPエラー413:フルヘッド

413エラーについて私が読んだすべてが当てはまらないようです。まず、ボディサイズを設定することをお勧めします。これはすでに1Gであると述べました。次に、これはヘッダーが大きすぎることに当てはまるようです。これは、リモートリポジトリで1000以上のリビジョンをチェックしようとしていることを考えると理にかなっています。

私が遭遇したもう1つのことは、large_client_header_buffersです。これをサーバーレベルとhttpレベルの両方で「64128k」のようなめちゃくちゃ大きな値に設定しました(サーバーで機能しないことについて何か読んでください)が、何も変わりませんでした。

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;
  }
}
4

2 に答える 2

2

問題は、アプリケーションサーバーのヘッダーバッファです。これは、Mercurialが非常に大きなヘッダーを使用しているためです。ヘッダーバッファのサイズとこのアプリケーションサーバー固有のサイズを増やす必要があります。スタンドアロンバージョンを使用している場合は、server-config.xmlを編集して、requestHeaderSize値を増やす必要があります。

交換:

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

と:

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

ソース:https ://groups.google.com/forum/#!topic / scmmanager / Afad4zXSx78

于 2013-09-18T17:59:53.567 に答える
0

私はHTTP Error: 413 (Request Entity Too Large)プッシュしようとしました。に追加することclient_max_body_size 2M;で解決しました/etc/nginx/nginx.conf。多分1000M超えないのだろうかclient_max_body_size...

于 2015-10-14T18:37:35.927 に答える