项目

通用

个人资料

操作

发布信息

  • 版本: 1.4.40
  • 上一版本: 1.4.39
  • 分支: 1.4
  • 状态: 稳定版
  • 发布目的: 错误修复
  • 发布经理: gstrauss
  • 发布日期: 2016-07-16

1.4.39 版的重要变更

  • 主要的错误修复版本;解决了问题跟踪器中的数百个问题
  • git master lighttpd 源代码仓库(从 svn 迁移)

下载

亮点

  • 改进的资源管理
    • 对动态后端提供异步、双向流选项
    • 检测客户端断开连接并中止对动态后端的请求
    • 重构动态处理程序控制流逻辑,以实现一致的清理
    • 限制内存占用;限制大响应使用的内存
  • 健壮性和可移植性
    • 如果 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

外部参考

stbuehler近 9 年前 更新 · 2 次修订