最近遇到一个问题,在Docker下使用Nginx-proxy为其他程序提供反代时,上传文件报错“文件过大”(431 Request Header Fields Too Large)。
这个问题通常在nginx中都是采用添加一行 client_max_body_size 128m;
来解决,但在docker环境中,被反代的容器不一定允许这么配置。
首先确定被反代的容器内的http服务器是否有附件上传限制,如果系统中存在多个限制(如php等),以最小的那一个为准。
根据nginx容器官方映像 https://hub.docker.com/_/nginx
的文档,生成空白配置文件 config.conf。
$ docker run --name tmp-nginx-container -d nginx
$ docker cp tmp-nginx-container:/etc/nginx/nginx.conf /host/docker/nginx/nginx.conf
$ docker rm -f tmp-nginx-container
在这个空白配置文档中的 http{}
中加入 client_max_body_size 128m;
在Nginx容器中引用这个配置文件:
Volume加入Bind: /host/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
重启容器即可。