如何编辑nginx.conf以增加文件大小上传

189

我想增加可上传的最大文件大小
通过在网上进行一些研究,我发现您需要编辑文件“nginx.conf”来实现这一目标。
目前我能够访问该文件的唯一方式是通过Putty并输入以下命令:

vi /etc/nginx/nginx.conf

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

  1. 如何编辑此文件?
  2. 我在网上发现你需要添加以下代码行:

client_max_body_size 8M;

我应该把这行代码放在 nginx.conf 的哪里?

4个回答

333

添加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中保存

完成后,您需要保存,这可以通过按下esc键,输入:wq并回车来完成。

重启Nginx和PHP

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

sudo service nginx restart
sudo service php5-fpm restart

或者你的PHP服务叫什么名字。


10
将其添加到 http { 上下文中,以便所有服务器都可以继承它,并确保您在 php.ini 中调整您的 upload_max_filesize 以匹配您的 nginx 设置。如果您正在使用 Homestead/Vagrant 运行 Laravel,则该文件位于 /etc/php5/fpm/php.ini - damiani
2
退出编辑器,将vi命令前加上sudo。就像这样; sudo vi /etc/nginx/nginx.conf 或 sudo vi /etc/php5/fpm/php.ini - Matt Burrow
5
sudo nginx -s reload会在不重启nginx的情况下重新加载配置。 - Vincnetas
2
PHP同样需要post_max_size - logicbloke
8M是什么意思?它表示8 MB的大小吗? - Conor
显示剩余5条评论

16

如果您在使用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无关,只是在我的项目中使用它,上述描述的方法对我很有帮助。希望它也能帮助其他人。


1
这个相关项目:https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion(jwilder的nginx代理与lets encrypt证书生成相结合)有一个很棒的脚本来完成这个任务,并且已经预先配置了这个选项(为100M)。从示例中创建.env文件;取消注释#USE_NGINX_CONF_FILES=true这一行;运行start.sh,最后运行docker-compose up。(我与这两个项目都没有关联)。 - glaux

12

首先,导航到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

完成。


5
这个问题是关于nginx web服务器,而不是PHP编程语言。 - Torque
1
这对我有用,@Rafik Farhad。它可能也会帮助其他人。我知道这是一个nginx配置问题。但在某些情况下,可能需要添加一些其他功能。所以我在这里做了。谢谢。 - Vasu

3

你可以一整天增加client_max_body_size和upload_max_filesize+post_max_size。但是如果不调整HTTP超时时间,它永远不会起作用。

//你需要调整这个,并且可能还需要在PHP方面进行调整。 client_body_timeout 2分钟 //1GB文件上传


有关调整您的 Web 服务器的更多信息,请参见此处:https://doc.owncloud.com/server/admin_manual/configuration/files/big_file_upload_configuration.html - Digital Human

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接