2010-12-06 15 views
12

ファイルを自分のサイトにアップロードしようとすると、Nginxの "413 Request Entity Too Large"エラーが表示されますが、nginx.confファイルでは、現時点で約250MBであり、php.iniの最大ファイルサイズも変更しました(そして、はい、私はプロセスを再開しました)。エラーログは私にこれを与える:Nginxエラー413

2010年12月6日4時15分06秒[エラー] 20124#0:あまりにも大きな体を送信することを目的と * 11975クライアント:1144149バイト、クライアント: 60.228.229.238 、サーバー:www.x.com、要求: "POST アップロード/ HTTP/1.1"、ホスト: "x.com"、参照元: "http://x.com/"

として、私が知る限り、1144149バイトは250MBではありません... ここに何かがありますか?

user nginx; 
worker_processes 8; 
worker_rlimit_nofile 100000; 

error_log /var/log/nginx/error.log; 
#error_log /var/log/nginx/error.log notice; 
#error_log /var/log/nginx/error.log info; 

pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
    use epoll; 
} 


http { 
    include  /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log /var/log/nginx/access.log main; 

    sendfile  on; 
    client_max_body_size 300M; 
    tcp_nopush  on; 
    tcp_nodelay  on; 
    server_tokens off; 
    gzip   on; 
    gzip_static  on; 
    gzip_comp_level 5; 
    gzip_min_length 1024; 
    keepalive_timeout 300; 
    limit_zone myzone $binary_remote_addr 10m; 

    # Load config files from the /etc/nginx/conf.d directory 
    include /etc/nginx/sites/*; 
} 

とサイトのためのバーチャルホスト:

はここでベースnginxの設定ファイルです

server { 
    listen  80; 
    server_name www.x.com x.com; 

    access_log /var/log/nginx/x.com-access.log; 

    location/{ 
     index index.html index.htm index.php; 
     root /var/www/x.com; 

     if (!-e $request_filename) { 
      rewrite ^/([a-z,0-9]+)$ /$1.php last; 
      rewrite ^/file/(.*)$ /file.php?file=$1; 
     } 

     location ~ /engine/.*\.php$ { 
      return 404; 
     } 

     location ~ ^/([a-z,0-9]+)\.php$ { 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include  fastcgi_params; 
     } 
    } 
} 
+0

変更したnginxの設定を引用してください。 –

+0

大丈夫です。 – EJay

答えて

11

があなたのnginxのビルドのバージョンを知らないとそれがこの厳しい可能で建てられたモジュール、以下を試してください:

  1. あなたのclient_max_body_size 300Mをコピーしてください。あなたのvhost設定の場所/ {}の部分に一行を入れてください。私はそれがデフォルト(1 MB)を適切に上書きしているかどうかは分かりません。

  2. nginx_upload_moduleをお使いですか?もしそうなら、upload_max_file_sizeが300MBであることを確認してください。あなたの設定の行だけでなく、

-1

私はまた、あなたが* .phpの場所ハンドラ

location ~ ^/([a-z,0-9]+)\.php$ { 

カスケードレベル内の1つの「下」であることに、それを定義することができ、それはどうかを確認する簡単な方法であろうと追加します問題はあなたのnginxの設定やモジュールから来ます。

413エラー "ボディが大きすぎる"は実際にはNGinxエラーなので、PHPからは当てはまりません。

+0

なぜ私はこの回答にdownvotedされたか分かりませんか?説明するケア? – nembleton

1

マイセットアップされました:

php.iniの

... 
upload_max_filesize = 8M 
... 

... 
client_max_body_size 8m; 
... 

nginx.confそれがアップロードされたとき、nginxのは、エラー413を示しました。

は、その後、私は考えを持っていた:私はこのように、nginxのはupload_max_filesizeでより大きな値に設定client_max_body_size、エラー413を表示させません。

php.iniの

... 
upload_max_filesize = 8M 
... 

nginxの。conf

... 
client_max_body_size 80m; 
... 

どうしましたか?

80 MBより小さいアップロードの場合、nginxはエラー413を表示しませんが、ファイルが8 MBまでの場合、PHPはエラーを表示します。

これは私の問題を解決しましたが、80MBを超えるファイルをアップロードすると413エラーが発生します.nginxルール。

+0

私はclient_max_body_size 64mを追加しました。 confのhttp {}部分に入り、再起動して動作しました!ありがとう! – flunder

+0

これは私のためにそれを解決しました。私は自分のノードサーバー上のボディパーサーが問題だと思ったが、この行をnginxに設定することを完全に忘れてしまった – SMT

関連する問題