“413 Entité De Demande Trop Grande” Erreur Rails 3.2 Phusion Passenger
J'ai une application rails à l'aide de Rails 3.2.3, Ruby 1.9.3, et Phusion Passenger avec le module Nginx. Les utilisateurs de l'application ont besoin de télécharger de gros fichiers. J'ai ajouté de la directive client_max_body_size 500M;
à l'emplacement de bloc dans la nginx.conf (ci-dessous) et s'est arrêté et a commencé à nginx grâce à l'aide de Ctrl-C pour arrêter de nginx et passenger start
redémarrage de nginx. Cependant, lorsque j'essaie de télécharger un fichier qui est 127 mo, j'obtiens l'erreur "413 Request Entity Too Large". Quelqu'un peut-il me faire savoir ce que je suis dominant?
Merci,
Mon nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
passenger_root /Users/mcmahling/.rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.12;
passenger_ruby /Users/mcmahling/.rvm/wrappers/ruby-1.9.3-p125/ruby;
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 165;
#gzip on;
server {
listen 80;
server_name localhost;
client_max_body_size 4G;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
client_max_body_size 4G;
client_body_buffer_size 128k;
client_body_temp_path /usr/local/nginx/client_body_temp;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location /{
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location /{
# root html;
# index index.html index.htm;
# }
#}
}
voici quelque chose de similaire: stackoverflow.com/q/44605469/860099
OriginalL'auteur user437969 | 2012-05-04
Vous devez vous connecter pour publier un commentaire.
Changement
client_max_body_size 4G;
à4g;
ou500m;
insde le bloc de serveurIl faut juste être 4g ou 500m.
J'ai eu le même problème. Ajouté
client_max_body_size 4g;
à l'intérieur de lahttp
bloc, le problème est résolu.Dans le cas où vous avez plusieurs fichiers de config autour de la pose, cela pourrait également être le réglage de ce paramètre, utilisez la suite de trouver toutes les occurrences d':
sudo grep -R 'client_max_body_size' ./*
Merci, travaillé. J'ai mis client_max_body_size 4g; dans le bloc de serveur. N'oubliez pas de redémarrer nginx. Aussi, si vous avez de PHP, vous devez définir la client_max_body_size là aussi.
OriginalL'auteur Mike
À en juger par Nginx Erreur 413 et http://forum.slicehost.com/index.php?p=/discussion/1714/nginx-413-when-uploading-file-1mb-or-larger/p1, vous pourriez essayer d'avoir des
client_max_body_size
spécifié qu'une seule fois, peut-être seulement dans la section serveur, bien que cela semble douteux.Aussi, comme mentionné dans une autre réponse, je pense que vous voulez " 4g " en tant que valeur.
OriginalL'auteur muffinista
C'est juste une hypothèse au hasard, et depuis je ne sais ni Rails, Ruby, ni nginx, je ne peux pas vraiment savoir si mon idée s'applique, mais ici il est de toute façon, peut-être que ça aide...
Avez-vous vérifié par ce procédé, les fichiers sont transférés? Votre problème me rappelle une situation où mon Ajax-demandes ayant échoué mystiquement. Après quelques recherches, j'ai découvert toutes les demandes ont été envoyées via GET (ce qui était la mauvaise façon de le faire en premier lieu). Changer de POST résolu mon problème alors.
Puisque vous êtes l'envoi de fichiers, il peut être une chose totalement différente (j'avais données sur 2KiB en taille).
Et, at-elle aider?
OriginalL'auteur kratenko
client_max_body_size 10m;
fonctionne pour moi, avec un ';' à la et de, et de redémarrer Nginx et la Licorne, ou apache...etc
Comme @MaffooClock dit, à l'intérieur de la http bloc.
OriginalL'auteur Vitor Rocha