在哪里给client_max_body_size 2M;在nginx.conf文件中

时间:2015-05-06 12:03:12

标签: ruby-on-rails ruby-on-rails-4 nginx server passenger

我在/etc/nginx/nginx.conf文件中提到过这个

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;    
        # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

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

    ##
    # SSL Settings
    ##
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # nginx-naxsi config
    ##
    # Uncomment it if you installed nginx-naxsi
    ##

    #include /etc/nginx/naxsi_core.rules;

    ##
    # Phusion Passenger config
    ##
    # Uncomment it if you installed passenger or passenger-enterprise
    ##

    passenger_root /home/dinshaw/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.56;
    passenger_ruby /home/dinshaw/.rvm/gems/ruby-2.1.5/wrappers/ruby;
    client_max_body_size 2M;
    ##
    # Virtual Host Configs
    ##

     include /etc/nginx/conf.d/*.conf;
     include /etc/nginx/sites-enabled/*;
        server {
           rails_env development;
           listen 80;
           server_name localhost;
           root /home/dinshaw/projects/freeway/freeway-sdk-portal/public;
           access_log /home/dinshaw/projects/freeway/freeway-sdk-portal/log/nginx_access.log;
           error_log /home/dinshaw/projects/freeway/freeway-sdk-portal/log/nginx_error.log;
           passenger_enabled on;
         }
}


# mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
# }

此后我在服务器外面没有这样的效果,也是这样:

passenger_root /home/dinshaw/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.56;
passenger_ruby /home/dinshaw/.rvm/gems/ruby-2.1.5/wrappers/ruby;


server {
    rails_env development;
    client_max_body_size 2M; 
    listen 80;
    server_name localhost;
    root /home/dinshaw/projects/myCode/public;
    access_log /home/dinshaw/projects/myCode/log/nginx_access.log;
    error_log /home/dinshaw/projects/myCode/log/nginx_error.log;
    passenger_enabled on;
}

但是这也行不通如果上传的内容超过了这个数字也没有给出错误。我的

 nginx version: nginx/1.6.3

请指导我大约2天以上的工作,而不是做什么。

1 个答案:

答案 0 :(得分:1)

通过将client_max_body_size放在http {}和server {}括号内所做的工作是微观定义你的client_max_body_size。

NGINX的工作原理基本上是嵌套控件设置,最外层的shell是http {} - >服务器{} - >地点 {}。因此,这意味着如果您在http {}中设置了某些内容,则会将其应用于服务器{}和位置{}。但是如果你在服务器{}中设置了一些东西,那么它只适用于那个服务器{}而不适用于http {}。

note :总是,无论何时对nginx.conf文件进行一些更改,都必须重新启动nginx服务器(如上面建议的@ihsan):

sudo service nginx restart

你在这里做的是一个很好的尝试,但你已经定义了两次相同的东西,所以如果它第一次不起作用它应该没有太大的区别。

我多次遇到过这个问题,除了更改你的nginx.conf文件以允许你的最大大小为2M之外,你还需要更改你的php.ini文件以允许你上传一定的大小(2M)我猜?)。

在php.ini文件中,你会发现一些看起来像:

upload_max_filesize = 10M
post_max_size = 10M

您还必须更改这些限制以匹配预期的上传文件大小。您的选择有多大,但请记住,您设置此限制越大,您就越有机会将垃圾邮件发送者或服务器恶霸上传大文件到您的服务器,从而占用宝贵的空间和带宽。

最后,如果您监控NGINX error.log,您应该能够看到限制上传的确切过程。您可以在http {}或server {}括号中启用error.log,如下所示:

error_log /var/log/nginx/error.log warn;

提醒一下,将日志级别设置为警告会产生非常大的文件(特别是如果你有很多虚拟服务器正在运行),所以建议你在进行故障排除时只保留它,然后再转动它仅回到更高的错误。

有关如何监控NGINX错误的更多信息,请阅读:https://www.nginx.com/resources/admin-guide/logging-and-monitoring/

希望这有帮助!