lighttpd: 413 - Request Entity Too Large

来源:互联网 发布:国内云计算公司排名 编辑:程序博客网 时间:2024/06/18 14:55

        今天在测试表单提交时遇到一个问题,当POST的内容比较多的时候,lighttpd会返回413: Request Entity Too Large。这个返回码表示请求的body过大。通过测试,发现当请求数据大于64KB,服务器返回413.

        baidu&google了很多文章,千篇一律,说要设置下 server.upload-dirs、server.max-request-size等,尝试多种设置和目录权限,没有搞定。

        那么,还是从基本点开始研究,把设置项搞清楚。

        server.upload-dirs              上传临时目录,默认为"/var/tmp",但必须是在本地磁盘(... assume it is a local harddisk)

        server.max-request-size    可以上传至服务器的最大值,单位为kb(kilobytes),默认不限制。

(以上解释可在源代码包 lighttpd-1.4.35/doc/config/lighttpd.con找到)


       接着分析源码,当POST大于64KB时,数据被写入临时文件,默认目录为 /var/tmp。

       在server上执行"df -hl",发现l磁盘目录/var/tmp空间已满,所以写临时文件失败导致返回413.

Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             9.9G  9.4G     0 100% /
tmpfs                 7.3G     0  7.3G   0% /dev/shm
/dev/xvda1            443G  236G  186G  56% /home


       于是,清理磁盘空间,或者lighttpd.con修改server.upload-dirs或指向别的目录,重启测试成功。

       总结:遇到问题从最基本的点开始,本例即是把配置项弄清楚,再散发到源代码分析程序运行流程。

0 0