我的/admin网站上有一个目录,我想允许管理员通过 Web 表单上传大文件。这是我的 nginx.com 的外观:
http {
# ...
client_max_body_size 16M;
# ...
server {
server_name example.com;
root /var/www/example.com;
index index.php;
location /admin {
client_max_body_size 256M;
}
# ...
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用。/admin/index.php脚本无法上传大于 16Mb 的文件:413 请求实体太大
但是,如果我移动client_max_body_size到server块一切工作正常。但我不想仅对admin目录进行此更改。
根据docs,client_max_body_size可以放置在location块内以仅覆盖所需路径的设置。
可能有什么问题?
Mar*_*ald 18
它工作得很好,问题是您误解了位置的工作方式。Nginx 只会应用一个位置块,绝不会超过一个。所以当你有两个位置时
location ~ \.php$并且location /adminURI 是/admin/index.php您的第一个位置,但第二个位置不适用。即使您要在某个位置使用重写,nginx 也会丢弃指令并为新位置重新解析它们。
这也是你总是发布完整配置的原因,这样你就不会隐藏真正的错误。
| 归档时间: |
|
| 查看次数: |
13699 次 |
| 最近记录: |