【问题标题】:How to edit nginx.conf to increase file size upload如何编辑 nginx.conf 以增加文件大小上传
【发布时间】:2014-12-30 06:32:54
【问题描述】:

我想增加可以上传的maximum file size
在网上做了一些研究后,我发现你必须编辑文件'nginx.conf'。
我目前可以访问此文件的唯一方法是通过 Putty 并输入命令:

vi /etc/nginx/nginx.conf

这将打开文件,但我现在有 2 个问题:

  1. 如何编辑此文件?
  2. 我在网上查到你要添加下面这行代码:

client_max_body_size 8M;

我应该把这行代码放在nginx.conf的什么地方?

【问题讨论】:

    标签: nginx nginx-config


    【解决方案1】:

    添加 client_max_body_size

    现在您正在编辑文件,您需要将该行添加到服务器块中,如下所示;

    server {
        client_max_body_size 8M;
    
        //other lines...
    }
    

    如果您托管多个站点,请像这样将其添加到 http 上下文中;

    http {
        client_max_body_size 8M;
    
        //other lines...
    }
    

    同时更新您的 php.ini 文件中的upload_max_filesize,以便您可以上传相同大小的文件。

    保存在 Vi 中

    完成后需要保存,可以在 vi 中按esc 键并输入:wq 并返回。

    重启 Nginx 和 PHP

    现在您需要重新启动 nginx 和 php 以重新加载配置。这可以使用以下命令来完成;

    sudo service nginx restart
    sudo service php5-fpm restart
    

    或者任何你的 php 服务被调用。

    【讨论】:

    • 将它添加到http { 上下文中可能不是一个坏主意,以便所有服务器都继承它。并确保调整php.ini 中的upload_max_filesize 以匹配您的nginx 设置。如果你使用 Homestead/Vagrant 运行 Laravel,该文件位于 /etc/php5/fpm/php.ini
    • 是的,我忘了提到我正在使用 Laravel Homestead。所以我打开'/etc/php5/fpm/php.ini',发现代码行'upload_max_filesize = 2M',所以我想把它改成'2M'变成'8M'。进行此编辑后,是否只需按“Ctrl Z”退出文件,然后运行“sudo service nging restart”?
    • 退出编辑器,在 vi 命令前加上 sudo。像这样; sudo vi /etc/nginx/nginx.conf 或 sudo vi /etc/php5/fpm/php.ini
    • sudo nginx -s reload 重新加载配置而不重启 nginx
    • php 也需要post_max_size
    【解决方案2】:

    如果使用 nginx 代理作为 docker 容器(例如jwilder/nginx-proxy),可以通过以下方式配置client_max_body_size(或其他属性):

    1. 创建自定义配置文件,例如/etc/nginx/proxy.conf 具有此属性的正确值
    2. 运行容器时,将其添加为卷,例如-v /etc/nginx/proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro

    个人觉得这种方式相当方便,因为不需要构建自定义容器来更改配置。我不隶属于jwilder/nginx-proxy,只是在我的项目中使用它,上面描述的方式帮助了我。希望它也对其他人有所帮助。

    【讨论】:

    • 这个相关项目:github.com/evertramos/…(来自 jwilder 的 nginx-proxy 与来自 let encrypt 的证书生成相结合)有一个简洁的脚本来执行此操作,并且预配置了此选项(到 100M)。从示例中创建 .env;取消注释#USE_NGINX_CONF_FILES=true 行;运行start.sh,最后运行docker-compose up。 (我不隶属于这两个项目)。
    【解决方案3】:

    首先导航php.ini

    的路径

    sudo vi /etc/php/7.2/fpm/php.ini

    然后,下一个变化

    upload_max_filesize = 999M
    post_max_size = 999M
    

    然后ESC-->:wq

    现在最后粘贴这个命令,

    sudo systemctl restart php7.2-fpm.service

    你已经完成了。

    【讨论】:

    • 这个问题是关于 nginx web 服务器,而不是 PHP 编程语言
    • 这对我有用@Rafik Farhad。它也可能对其他人有所帮助。我知道这是一个 nginx 配置问题。但在某些情况下,可能还需要添加一些其他功能。所以我在这里做了。谢谢。
    【解决方案4】:

    您可以整天增加 client_max_body_size 和 upload_max_filesize + post_max_size。如果不调整 HTTP 超时,它将永远无法工作。

    //你需要调整这个,可能在 PHP 端也可以。 client_body_timeout 2min // 1GB 文件上传

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2014-12-31
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多