操作
发布信息¶
- 版本: 1.4.40
- 上一版本: 1.4.39
- 分支: 1.4
- 状态: 稳定版
- 发布目的: 错误修复
- 发布经理: gstrauss
- 发布日期: 2016-07-16
1.4.39 版的重要变更¶
- 主要的错误修复版本;解决了问题跟踪器中的数百个问题
- git master lighttpd 源代码仓库(从 svn 迁移)
下载¶
- http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.40.tar.gz
- GPG 签名: http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.40.tar.gz.asc
- SHA256:
dd56f46a586192e140600f32836b38a1c276d86692721d53c7976af14a904886
- http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.40.tar.xz
- GPG 签名: http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.40.tar.xz.asc
- SHA256:
80450dfcf7604d6c516a00a0ce750937074ef844bbdee3b3f23384187b9d4f8d
- SHA256 校验和: http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.40.sha256sum
亮点¶
- 改进的资源管理
- 对动态后端提供异步、双向流选项
- 检测客户端断开连接并中止对动态后端的请求
- 重构动态处理程序控制流逻辑,以实现一致的清理
- 限制内存占用;限制大响应使用的内存
- 健壮性和可移植性
- 如果 mmap 或 sendfile 不可用,则回退到传统 I/O
- 更新支持 lua 5.2, 5.3; memcached; libressl; openssl 1.1.0
- 更好的 cygwin 支持;通过测试
- 更好的 webdav 支持
- 选定的新功能
- lighttpd -tt 执行配置验证和启动前检查
- lighttpd -1 在标准输入套接字上处理单个(一个)请求(例如 xinetd)
- lighttpd -i <secs> 在 <secs> 秒不活动后优雅关闭
- 配置文件支持包含文件通配符(例如 include "conf.d/*.conf")
- server.bsd-accept-filter ("httpready", "dataready")
- server.error-handler 用于处理 4xx 和 5xx 状态码
- server.http-parseopt-header-strict 限制 HTTP 头部中允许的字符
- server.http-parseopt-host-strict 限制 HTTP Host 中允许的字符
- server.http-parseopt-host-normalize 规范化 HTTP Host 头部
- server.listen-backlog 配置套接字监听队列
- server.max-request-size 现在可以指定作用域(不再是全局设置)
- server.stream-request-body 控制请求的流式传输、缓冲
- server.stream-response-body 控制响应的流式传输、缓冲
- 如果磁盘已满,server.upload-dirs 将在列表中的其余目录中重试
- accesslog.format 现在支持 %a %A %C %D %k %{}t %{}T
- 如果达到限制,evasive.location 用于 302 重定向选项
- 如果替换为空,url.rewrite 和 url.redirect 现在会短路
- url.access-allow 用于明确允许的后缀列表;拒绝其他
- 如果 Location: /path?query,mod_cgi 处理本地重定向响应
- 内部重定向(cgi, magnet, rewrite, errdoc)时设置 REDIRECT_URI
- 错误文档的 REDIRECT_STATUS 设置为 http 错误状态
- 如果目标 URL 以 '/' 开头,mod_indexfile 设置 PATH_TRANSLATED_DIRINDEX
- "listen-backlog" 配置 FastCGI, SCGI 的套接字监听队列
- CGI 和 SCGI 的 X-Sendfile(除了 FastCGI)
lighttpd 1.4.41 中未来计划的行为变更¶
- 如果设置,server.use-ipv6 = "enable" 将从全局作用域继承,因此如果这不是期望的行为,请将 server.use-ipv6 = "disable" 添加到相应的 $SERVER["socket"] 块中。server.set-v6only 类似。
- 长期废弃的配置指令将被移除。如果指令被重命名,这些指令将不起作用并发出警告消息。移除后,它们将导致“未知指令”警告。
1.4.39 版的变更¶
- [mod_ssi] 增强对 ssi 变量的支持(感谢 fbrosson)
- 添加对 lua 5.2 和 5.3 的处理(修复 #2674)
- 使用 libmemcached 而非已弃用的 libmemcache
- 为更多分配结果添加 force_assert
- [mod_cgi] 使用 MAP_PRIVATE 映射临时文件(修复 #2715)
- [核心] 除非使用 server.max-workers,否则不向进程组发送 SIGHUP(修复 #2711)
- [mod_cgi] 当 docroot 为 "/" 时,chdir "/" 的边缘情况(修复 #2460)
- [mod_cgi] 如果 execve() 失败,则发出跟踪并退出(关闭 #2302)
- [configparser] 解析错误后不继续(修复 #2717)
- [核心] 除非前一个分支已准备就绪,否则不评估 else 分支(修复 #2598)
- [核心] 修复条件缓存处理
- [核心] 改进条件启用(感谢 Gwenlliana, #2598)
- [mod_compress] 不区分大小写的内容编码(修复 #2645)
- [插件] 如果不需要,不包含 dlfcn.h(修复 #2548)
- [mod_fastcgi] X-Sendfile 文件未找到时显示 404(修复 #2474)
- [mod_cgi] 如果 CGI 结束且没有响应,则发送 500(修复 #2542)
- [mod_cgi] 整合 CGI 清理代码
- [mod_cgi] 简化 mod_cgi_handle_subrequest()
- [mod_cgi] 如果写入请求体失败,则终止 CGI
- [mod_proxy] 使用不区分大小写的比较来过滤头部,向后端发送 Connection: Close(修复 #421)
- [mod_dirlisting] dir-listing.hide-dotfiles 默认启用(修复 #1081)
- [mod_secdownload] 修复 secdl_verify_mac 中的缓冲区溢出(由 Fortify Open Review Project 报告)
- [mod_fastcgi,mod_scgi] 修复后端启动失败时文件描述符泄露问题(由 Fortify Open Review Project 报告)
- [核心] 改进数组 API 以防止内存泄露
- [核心] 重构数组搜索;将数组大小限制提高到 SSIZE_MAX
- [核心] 修复 configparser_merge_data 中的内存泄露
- [核心] 提供 array_extract_element 并使用它
- [核心] configparser: 数组合并中重复键的错误(修复 #2685)
- [核心] 更仔细地解析 $SERVER["socket"] 配置字符串(为 #2204 做准备)
- [核心] 接受不带端口的 $SERVER["socket"],使用 server.port 作为回退(修复 #2204)
- [mod_magnet] 定义 lua_pushglobaltable (适用于 lua5.1) 并使用它(修复 #2719)
- [ssl] 支持在 SNI 回调中禁用 ssl.verifyclient.activate(修复 #2531)
- 在 SIGCHLD 中断后重启(部分)系统调用;应修复 LDAP 问题(修复 #2464)
- [核心] 请求超时时记录远程地址(修复 #652)
- [自动构建] 使用 AC_CANONICAL_HOST 而非 AC_CANONICAL_TARGET(修复 #1866)
- [核心] 修复 keep-alive 请求中的 request_start,以标记收到第一个字节的时间(修复 #2412)
- [核心] 退出时截断 pidfile(修复 #2695)
- 在文件顶部一致包含 config.h(修复 #2073)
- [核心] 添加通用向量实现
- [核心] 用向量替换数组弱引用
- [base64] 修复由于损坏的 force_assert 导致的崩溃
- [单元测试] 添加 test_buffer 和 test_base64 单元测试
- [缓冲区] 重构 buffer_path_simplify(修复 #2560)
- 验证 strtol, strtoul 的返回值(修复 #2564)
- [mod_ssi] 添加 SSI 变量 SCRIPT_{URI,URL} 和 REQUEST_SCHEME(修复 #2721)
- [配置] 如果 server.upload-dirs 包含不存在的目录,则发出警告(修复 #2508)
- [mod_proxy] 接受 LF 分隔的头部,而不仅仅是 CRLF(修复 #2594)
- [核心] 在守护进程化时等待孙进程准备就绪(修复 #2712,感谢 pasdVn)
- [核心] 如果请求具有 Transfer-Encoding: chunked,则响应 411 Length Required(修复 #631)
- [核心] 修复了显式指定默认模块时的加载问题
- [核心] lighttpd -tt 执行启动前检查(修复 #411)
- [统计] mimetype.xattr-name 全局配置选项(修复 #2631)
- [mod_webdav] 允许对文件进行 Depth: Infinity 锁定(修复 #2296)
- [mod_status] 使用 snprintf() 而非 sprintf()
- 将缓冲区大小传递给 li_tohex()
- 使用 li_[iu]tostrn() 而非 li_[iu]tostr()
- [流] 在 open() 后使用 fstat() 获取文件大小
- [核心] 对于 lighttpd -[vVh],在退出前清理 srv
- [mod_fastcgi,mod_scgi] 检查是否在同一 unix 套接字上启动(修复 #319)
- [mod_cgi] 始终设置 QUERY_STRING(修复 #1339)
- [mod_auth] 在 WWW-Authenticate 中发送 charset="UTF-8"(修复 #1468)
- [mod_magnet] 为清晰起见重命名变量(修复 #1483)
- [mod_extforward] 重置方案的 cond_cache(修复 #1499)
- [mod_webdav] readdir POSIX 兼容性(修复 #1826)
- [mod_expire] 重置错误文档的缓存响应头部(修复 #1919)
- [mod_status] 页面刷新选项(修复 #2170)
- [mod_status] 包含连接状态计数的表格(修复 #2427)
- [mod_dirlisting] 目录 <tr> 的类(修复 #2304)
- [核心] 定义 STDC_WANT_LIB_EXT1(修复 #2722)
- [核心] 非 root 用户将 setrlimit max-fds 设置为 <= rlim_max(修复 #2723)
- [mod_ssi] 配置 ssi.conditional-requests
- [mod_ssi] 配置 ssi.exec(修复 #2051)
- [mod_redirect,mod_rewrite] 如果替换为空则短路(修复 #2085)
- [mod_indexfile] 将物理路径保存到环境变量(修复 #448, #892)
- [核心] 在将文件附加到 cq 时打开 fd(修复 #2655)
- [配置] server.listen-backlog 选项(修复 #1825, #2116)
- [核心] 在部分写入、ENOSPC 时重试临时目录(修复 #2588)
- [核心] 使用即将发布的 openssl 1.1.0 版本编译(修复 #2727)
- [核心] 改进动态处理程序控制流逻辑
- [核心] 推迟读取请求体直到处理子请求(修复 #2541)
- [核心] 始终轮询客户端的 POLLHUP/POLLERR 事件(修复 #399)
- [mod_fastcgi,mod_scgi,mod_proxy] 处理程序可以在发送请求体之前读取响应(修复 #131, #2566)
- [mod_cgi] 异步发送请求体到 CGI
- [核心] 使用即将发布的 openssl 1.1.0 版本编译(修复 #2727)
- [核心] 将 REDIRECT_STATUS 设置为 error_handler_saved_status(修复 #1828)
- [核心] server.error-handler 错误页面的新指令(修复 #2702)
- [核心] $HTTP["remote-ip"] CIDR 条件匹配中支持 IPv6(修复 #2706)
- [核心] http_response_send_file() 共享代码(#2017)
- [mod_fastcgi] 使用 http_response_xsendfile()(修复 #799, 修复 #851, 修复 #2017, 修复 #2076)
- [mod_scgi] X-Sendfile 功能(修复 #2253)
- [mod_cgi] X-Sendfile 功能(修复 #2313)
- [mod_webdav] 如果文件系统无法 mmap 则 lseek,read(#2666,修复 #962)
- [mod_compress] 使用 mmap 并捕获 SIGBUS(#2666,修复 #1879)
- 如果 mmap() 失败,则回退到 lseek()/read()(修复 #2666)
- [mod_auth] 跳过空行和注释行(修复 #2327)
- [核心] 如果 sendfile 不受支持,则回退到 write(修复 #471, #987)
- [核心] 在不区分大小写的文件系统上保留 PATH_INFO 的大小写(修复 #406)
- [mod_ssi, mod_cml] 将 DOCUMENT_ROOT 设置为基本目录(修复 #2383)
- [核心] 命令行选项:在空闲时间限制后关闭(修复 #2696)
- [核心] lighttpd -1 处理 stdin 套接字上的单个请求(修复 #1584)
- [mod_fastcgi,mod_scgi] IPv6 支持(修复 #2372)
- [mod_status] 添加 JSON 输出选项(修复 #2432)
- [mod_webdav] 将 COPY/MOVE 目标映射到别名(修复 #1787)
- [mod_webdav] 改进 PROPFIND,PROPPATCH(#1818, #1953)
- [核心] 重置错误文档的响应头部和写入队列
- 使用 libressl 构建
- 使用 SCons 或 make 的静态构建说明
- [mod_auth] 为错误文档保留 WWW-Authenticate(修复 #2730)
- 写入文件后检查 close() 返回码
- 针对 openssl 1.1.0 预发布版的调整
- [配置] 支持包含文件通配符(修复 #1221)
- [mod_evasive] 如果达到限制,则 302 重定向选项(修复 #2199)
- [构建] 交叉编译增强功能(修复 #2276)
- [mod_accesslog] 使用 %X 报告中止的连接状态(修复 #1890)
- [mod_ssi] 修复 SSI 语句解析器
- [mod_ssi] 包含相对于别名、用户目录的文件(修复 #222)
- [mod_ssi] 添加 PCRE_* 选项以限制正则表达式
- [mod_ssi] 更灵活的引用(修复 #1768)
- [核心] 在重定向 URL 中用“[]”封装 IPv6 字面量
- [mod_ssi] 修复跨缓冲区边界的标签解析(修复 #2732)
- [mod_cgi,mod_scgi] X-Sendfile 设置 file_started(修复 #2733)
- [mod_fastcgi] X-Sendfile 不带分块响应(修复 #2733)
- [配置] http 头部解析严格性选项(修复 #551, 修复 #1086, 修复 #1184, 修复 #2143, #2258, #2281, 修复 #946, 修复 #1330, 修复 #602, #1016)
- [配置] 规范化 lighttpd.conf 中的 IP 字符串
- [build_cmake] 在 Mac OS X 上使用 MODULE(修复 #1761)
- [配置] server.bsd-accept-filter 选项
- [mod_webdav] 如果 ENOENT,则使用 LOCK 请求创建文件
- [核心] 将大响应缓冲到临时文件(修复 #758, 修复 #760, 修复 #933, 修复 #1387, #1283, 修复 #2083)
- [核心] 将响应流式传输到客户端(#949)
- [TLS] 使用后释放 openssl 缓冲区(修复 #1265, 修复 #1283, #881)
- [配置] 用于流式传输请求/响应的配置选项(#949, #376)
- [核心] 将请求体流式传输到后端的选项(修复 #376)
- [核心] 将响应体流式传输到客户端的选项(修复 #949, #760, #1283, #1387)
- 在 FDEVENT_HUP 时清空后端套接字/管道缓冲区
- 移除对 joblist_append() 的多余调用
- 推迟选择“Transfer-Encoding: chunked”
- 异步、双向流式传输选项
- 修复 Coverity Scan 检测到的错误
- [cygwin] 修复 mod_proxy 和 mod_fastcgi ioctl 使用
- [mod_webdav] 移除 UNLOCK 的多余 SQL 参数
- 优雅关闭,无需不必要的 1 秒延迟
- [核心] 禁用 Nagle 算法 (TCP_NODELAY)
- [核心] 将声明添加到 fdevent.h(#2373)
- [测试] 移除对 CGI.pm 的依赖
- [TLS] 修复证书初始化期间的返回值检查
- [核心] 修复 server.max-request-size 以精确(修复 #2131)
- [mod_webdav] 修复 proppatch 内存泄露,其他修复(修复 #1334, 修复 #2000)
- [自动构建] CMake 检查 struct tm tm_gmtoff(修复 #2014)
- [mod_uploadprogress] 修复内存泄露(#1858)
- [核心] 使 server.max-request-size 可指定作用域(修复 #1901)
- [mod_fastcgi,mod_scgi] 检查是否在同一 unix 套接字上启动(#319)
- [mod_accesslog] %a %A %C %D %k %{}t %{}T(修复 #1145, 修复 #1415, 修复 #2081)
- [mod_access] 新指令 url.access-allow(修复 #1421)
- [核心] fdevent_libev: 更新 ev_timer 的使用
- [mod_cgi] 处理本地重定向响应(修复 #2108)