项目

通用

个人资料

操作

发布信息

  • 版本: 1.4.46
  • 上一版本: 1.4.45
  • 分支: 1.4
  • 状态: 稳定版
  • 发布目的: 错误修复
  • 发布经理: gstrauss
  • 发布日期: 2017-10-21

1.4.45版的重要更改

  • 新模块: mod_openssl, mod_vhostdb, mod_wstunnel
  • 新协议: Upgrade: websocket, HAProxy PROXY, RFC7239 Forwarded
  • 错误修复

下载

精选功能

  • HTTP/1.1 Upgrade: websocket (mod_proxy, mod_cgi, and mod_wstunnel)
  • HTTP/1.1 Expect: 100-continue
  • 代理: HAProxy PROXY 协议 (mod_extforward, mod_proxy)
  • 代理: RFC7239 Forwared HTTP 扩展 (mod_extforward, mod_proxy)
  • 代理: 后端主机/URL头部基础重映射
  • 配置: Lighttpd 启动时将 DNS 名称解析为第一个返回的 IP
  • 配置: 允许使用 := 覆盖之前的配置值
  • 配置: 允许对任意 HTTP 请求头 ($REQUEST_HEADER[]) 设置条件
  • 新模块: mod_openssl - 隔离 SSL/TLS 代码; 更清晰的抽象
  • 新模块: mod_vhostdb* - 通过数据库后端实现大规模虚拟主机的框架
  • 新模块: mod_wstunnel - 解码/编码 websocket 协议到/从后端
  • 动态后端通用代码; 通用功能; 更好的进程管理
  • 大量新的实验性功能指令

错误修复

  • 核心: 修复客户端赶上后端流时的流式响应问题
  • CGI: RFC3875 CGI 本地重定向严格遵守; 本地重定向默认禁用
  • BSD: 使用电平触发模式的 kqueue
  • 修复 HTTP 分块输入时触发的断言
  • SSL: 修复 SSL 双向流传输问题

行为更改

  • mod_scgi 在未指定主机时绑定到 INADDR_LOOPBACK
    (之前的行为使用 INADDR_ANY)
    如果 lighttpd 正在生成 SCGI 后端,默认现在是限制暴露
    到 localhost,除非明确配置为其他。这与
    mod_fastcgi 中的行为(自2008年以来)相符。
  • 核心: mimetype.assign 匹配 basename 或最长扩展名(".tar.gz"),
    而不仅仅是任何后缀匹配,如果条目达到16个或更多
  • 核心: 增加默认 server.max-keep-alive-requests 从 16 到 100
  • 代理: 添加 X-Forwarded-Host
  • openssl: ssl.read-ahead = "disable" 默认 (对慢速嵌入式系统更安全)
  • mod_cgi cgi.local-redir = "disable" 默认
    (RFC3875 6.2.2 本地重定向优化在 lighttpd 1.4.40 中添加)
  • 可重现构建: 在 lighttpd -h 或 lighttpd -v 中省略 __DATE____TIME__

1.4.45版以来的更改

  • [TLS] 标记使用 -lcrypto 但不使用 -lssl 的代码
  • 移除冗余的请求结束钩子调用
  • [mod_mysql_vhost] 移除开发调试代码
  • [核心] con 接口用于读/写; 隔离 SSL
  • [核心] 新增插件钩子以帮助隔离 SSL
  • [mod_openssl] 新模块 (初步布局)
  • [核心] 将 network_open_file_chunk() 移至 chunk.c
  • [mod_openssl] 将 openssl 代码移至 mod_openssl
  • [mod_openssl] 将 openssl 配置移至 mod_openssl
  • [核心] 将 connection_read_cq() 移至 connections.c
  • [mod_geoip] 从 handle_request_env 钩子调用
  • [构建] 仅 mod_openssl 依赖于 -lssl
  • [mod_auth] 如果是外部认证,启用可选授权 (修复 #2481)
  • [mod_openssl] 允许在 URL 路径上进行 ssl.verifyclient (修复 #2245)
  • [核心] 不要发送带有空值的请求/响应头
  • [mod_setenv] 用于覆盖/移除头部的指令 (修复 #650, 修复 #2295)
  • [mod_secdownload] 新指令修改哈希路径 (修复 #646, 修复 #1904)
  • [核心] 将连接节流移至 connections-glue.c
  • [核心] 支持 Expect: 100-continue 与 HTTP/1.1 (修复 #377, #1017, #1953, #2438)
  • [mod_openssl] 使用 TLS SNI 设置基于主机的证书
  • [mod_ssi] 将 #exec cmd="..." 输出发送到临时文件
  • [mod_scgi] tests/mod-scgi.t 单元测试
  • [mod_auth] 支持 LDAP 组进行 HTTP 认证 (修复 #1817)
  • [核心] 使用 getaddrinfo,inet_pton 代替 gethostbyname (修复 #2783)
  • [mod_auth] 在 DN 和过滤器中转义 LDAP 用户名
  • mod_vhostdb* (dbi,mysql,pgsql,ldap) (修复 #485, 修复 #1936, 修复 #2297)
  • [mod_auth] 让 LDAP 模板替换 '?'
  • 应用 debian/patches/spelling.patch
  • [核心] 允许模块中的连接级状态
  • [TLS] 在 rand.c 中包含 <openssl/opensslv.h>
  • [核心] 配置匹配任意 HTTP 请求头 (修复 #1556)
  • [mod_flv_streaming] 添加结束位置参数 (修复 #1887)
  • [核心] 后端发来的 X-LIGHTTPD-KBytes-per-second (修复 #954)
  • [核心] 提高带宽写入限制的准确性
  • [核心] 更快的优雅关机
  • [测试] 移除依赖 CGI.pm 的未使用文件
  • [文档] doc/initscripts.txt (修复 #2782)
  • [核心] 在 main() 中尽早检查 issetugid()
  • [核心] 合并重复的 getrlimit, network_init
  • [核心] 将间隔计时器移到 worker 事件循环附近
  • [核心] 在 main() 顶部初始化全局变量
  • [核心] 使用 SIGUSR1 优雅重启 (修复 #2785)
  • [mod_authn_mysql] 修复关机时的轻微内存泄漏
  • [mod_rrdtool] 如果加载但未配置,则不报错
  • [文档] SIGUSR1 文档和 lighttpd-angel SIGUSR1
  • [mime.conf] 将 text/markdown 添加到 utf-8 列表,重新生成 mime.conf
  • [mod_cgi] RFC3875 CGI 本地重定向严格遵守 (#2108)
  • [mod_cgi] 不将“Status”发送回客户端
  • [核心] 添加 308 永久重定向的标签
  • [mod_openssl] 从全局范围继承 ssl.*
  • [核心] 处理后端发送 Transfer-Encoding 的情况 (#2786)
  • [核心] 在电平触发模式下使用 kqueue (修复 #2788)
  • [mod_fastcgi,mod_scgi] 后端 spawn EINTR 重试 (#2788)
  • [核心] 配置选项以拦截动态处理程序错误 (修复 #974)
  • [核心] 在 server.c 中设置默认 server_tag
  • [核心] 在服务器启动消息中包含 lighttpd 版本
  • [核心] 将 version.h 逻辑移至 server.c
  • [核心] 如果 max-fds 过大则发出跟踪 (修复 #2789)
  • [mod_fastcgi,mod_scgi] 统一 waitpid 处理 (修复 #2791)
  • [mod_cgi] 修复 CGI 本地重定向与 url.rewrite-once 的问题 (修复 #2793)
  • [mod_scgi] 修复 unused_procs 双向链接
  • [mod_scgi] 修复 proc->id 潜在的重复使用
  • [mod_fastcgi,mod_scgi] 整合后端进程计数 (#2788)
  • [mod_cgi] 如果没有头部,则状态为 200 OK(已弃用) (#2786)
  • [核心] 修复 mod_extforward 的正则表达式条件替换 (修复 #2794)
  • [测试] 更正 mod-scgi.t 的跳过计数
  • [mod_vhostdb_ldap] 修复倒置逻辑 (coverity)
  • [mod_cgi] cgi.local-redir = [enable|disable] (#2108, #2793)
  • [核心] $REQUEST_HEADER[...] 包含其他配置 (#1556)
  • [mod_usertrack] usertrack.cookie-attrs 配置选项 (修复 #2795)
  • [核心] 如果未指定,默认 server.max-fds=4096 (#2789)
  • 更新 .gitignore,添加 .gitattributes
  • [核心] 减少小 max_conns 的连接分配
  • [配置] 针对数组列表进行更具体的检查
  • [mod_authn_gssapi] 在 cygwin 下需要 -lcom_err
  • [mod_cgi,fastcgi,scgi,proxy] 修复流式响应 (修复 #2796)
  • [mod_auth] 对于时间 <=1978 的系统,摘要随机数
  • [文档] simple-vhost.debug 接受整数值 (修复 #2797)
  • [核心] 修复无效配置文件导致的崩溃 (修复 #2798)
  • [核心] 移除未使用的成员 con->in_joblist
  • [mod_proxy] 移除对 con->got_response 的使用
  • [核心] 整合动态处理程序响应解析
  • [核心] 移除现在未使用的 buffer_search_string_len
  • [mod_cgi] 消除编译 -Os 时的警告
  • [mod_scgi] 连接成功后不再重新连接
  • [测试] 减少等待后端启动的时间
  • [核心] server.syslog-facility (修复 #2800)
  • [核心] server.syslog-facility (使用 -1 表示未设置) (#2800)
  • [核心] 允许覆盖之前的配置值 (修复 #2799)
  • [mod_proxy] 如果可用,设置 Content-Length
  • [mod_proxy] 设置 X-Forwarded-Host (修复 #418)
  • [核心] 移除多余的 Content-Length 数字检查
  • [核心] 移除一些未使用的头文件包含
  • [核心] 使用 con->dst_addr_buf 而不是重新计算 IP
  • [核心] 在需要的地方包含 "fdevent.h"
  • [核心] 使 stat_cache 对 stat_cache.c 私有
  • [核心] 收集 ioctl FIONREAD 代码
  • [核心] 在需要的地方包含 <netdb.h>
  • [核心] 当 mkstemp() 失败时报告文件路径 (修复 #2802)
  • [核心] 导出 http_request_host_policy() 以供重用
  • [mod_extforward] 简化头部搜索
  • [mod_extforward] 整合 ipstr_to_sockaddr()
  • [mod_extforward] IP 验证后更新 scheme
  • [mod_extforward] 重新安排代码; 准备 Forwarded
  • [mod_extforward] 支持 Forwarded HTTP 扩展 (#2703)
  • [mod_proxy] 支持 Forwarded HTTP 扩展 (修复 #2703)
  • [核心] inet_pton(), inet_ntop() 在 (sock_addr *) 上
  • [核心] 在 con->proto 中保存连接级别协议
  • [mod_extforward] 支持 HAProxy "PROXY" 协议 (修复 #2804)
  • [mod_extforward] 修复 Forwarded 处理中的错别字
  • [核心] 修复 stat_cache 初始化错误
  • [核心] 性能: stat_cache_mimetype_by_ext()
  • [核心] inet_ntop_cache 现在是 4 元素缓存
  • [mod_openssl] 退出时释放 local_send_buffer
  • [核心] 扩展 mimetype 搜索,不带前导 '.'
  • [核心] Linux 内核 < 2.6.27 时不使用 SOCK_CLOEXEC
  • [核心] 内联简单缓冲区是否为空检查
  • [核心] buffer_substr_replace()
  • [核心] sys-strings.h 对 strings.h 的抽象
  • [mod_proxy] 修复反斜杠转义
  • [核心] 从规范化主机字符串中省略默认端口
  • [核心] 修复没有 ipv6 支持的构建问题
  • [核心] 允许配置数组中的字符串和整数
  • [mod_accesslog] 为 %T 标记高精度时间戳 (修复 #2807)
  • [核心] 允许配置数组中的字符串、整数和数组
  • [核心] 为 plugin_config 分配内存以实现一致初始化
  • [mod_proxy] 头部中简单的主机/URL映射 (修复 #152)
  • [mod_uploadprogress] 处理查询字符串进度 ID (修复 #2808)
  • [mod_fastcgi] 整合后端读取代码
  • [mod_proxy,mod_scgi] 修复截断的错误跟踪
  • [核心] 如果 con->fd 为负,则跳过 socket shutdown()
  • [核心] 在连接升级后充当透明代理
  • [核心] 移除 fde_ndx 的冗余重置
  • [核心] configparser: 修复错误情况下的资源处理 (修复 #2809)
  • [核心] 修复配置文件中无效语法导致的崩溃 (修复 #2810)
  • [核心] 准备模块过渡到透明代理
  • [mod_proxy] 对 Upgrade: websocket 的基本支持 (修复 #2811)
  • [mod_extforward] 在 OSX 上编译
  • [核心] 设置 server.max-keep-alive-requests = 100 (修复 #2205)
  • [核心] 性能: 如果长度已知,跳过冗余的 strlen()
  • [核心] 配置“else”子句中的可选条件 (修复 #1268)
  • [mod_cgi] 对 Upgrade: websocket 的基本支持
  • [核心] 将缓慢后端的流缓冲到磁盘
  • [核心] 如果 !HAVE_FORK 则消除编译器警告
  • [构建] 如果 --enable-extra-warnings=error 则 -Werror
  • [构建] autotools 使用 AC_PROG_CC_STDC 宏
  • [mod_openssl] ssl.ca-crl-file 用于 CRL (修复 #2319)
  • [mod_openssl] ssl.ca-dn-file (修复 #2694)
  • [mod_proxy] 修复 coverity 识别的错别字
  • [mod_openssl] 如果未强制执行,则忽略客户端验证错误
  • [mod_openssl] 修复 openssl 1.1.0 的编译问题
  • [mod_extforward] 消除 clang 编译器警告
  • [mod_dirlisting] 将 "../" 排序到名称顶部
  • [mod_openssl] safer_X509_NAME_oneline() (修复 #2693)
  • [核心] 允许 SSL/TLS 更早的插件初始化
  • [mod_openssl] 调整 ssl.ca-dn-file 的使用
  • [核心] 修复 Mac OS X 上的编译器警告
  • [核心] server.socket-perms 设置 unix 上的权限 (修复 #656)
  • [核心] 如果是 AF_INET,AF_INET6,从 sock_addr 获取端口
  • [核心] server.error_handler_404 X-Sendfile ENOENT (#2474)
  • [核心] 整合 fork()/execve() 代码 (#1393)
  • [核心] 将 log_error_{open,cycle.close} 移至 server.c
  • [核心] 重命名 fd_close_on_exec()
  • [核心] 移除未使用的 stat_cache.h 包含
  • [核心] 添加 stdlib.h 缺失的包含
  • [核心] 减少 unistd.h 和其他头文件的暴露
  • [核心] sock_addr_from_str_hints 可重用名称解析
  • [核心] 继续收集 netdb.h 的使用
  • [核心] 继续收集 netdb.h 的使用
  • [核心] 继续收集 netdb.h 的使用
  • [核心] fdevent_connect_status() 共享代码
  • [核心] 添加 const 以减少 .data 段大小
  • [mod_proxy] 将 data_fastcgi 移至 mod_proxy.c
  • [mod_proxy] 在配置时存储地址族
  • [mod_fastcgi] 稍微简化计数器
  • [mod_fastcgi] 整合 connect() 错误处理
  • [mod_fastcgi] 在 fcgi_create_env() 中设置 request_id
  • [mod_fastcgi] 将延迟的 connect() 移入 switch()
  • [mod_fastcgi,mod_scgi] 统一 connect() 错误
  • [mod_scgi] 移除未使用的 parse_response 成员
  • [mod_fastcgi,mod_scgi] 结构成员一致性
  • [mod_fastcgi,mod_scgi] 在启动时解析 bin_path
  • [mod_fastcgi,mod_scgi] 使用临时缓冲区用于 cgi_env
  • [核心] 用于套接字后端的共享代码
  • [核心] 将负载分散到套接字后端进程
  • [核心] 为套接字后端进程存储 sockaddr
  • [核心] 在启动时为套接字后端解析 DNS
  • [核心] 套接字后端进程的自适应生成 (修复 #1162)
  • 抑制 -Wimplicit-fallthrough 编译器警告
  • [文档] 更新 README
  • [核心] fdevent_cycle_logger()
  • [核心] 精确回收 lighttpd worker pid
  • [核心] 如果管道日志记录器退出则重新启动 (修复 #1393)
  • [mod_webdav] PROPFIND getetag attr 必须与 GET 匹配
  • [核心] SA_SIGINFO 存在与否的一致行为
  • [核心] 在测试模式下不删除 pid 文件
  • [核心] 如果没有加密,添加公共域 SHA1
  • [mod_wstunnel] websocket 隧道到其他协议
  • [核心] 仅将 SIGHUP 转发给 lighttpd worker
  • [mod_dirlisting] 将 README 和 HEADER 视为路径 (修复 #2818)
  • [核心] 设置一次性模式 fd O_NONBLOCK, FD_CLOEXEC
  • [核心] 移除 fdevent fcntl_set 钩子
  • [mod_extforward] 评论中的错别字
  • [mod_cgi] 添加缺失的 #include
  • [核心] 修复 coverity 识别的无效 sizeof()
  • [核心] 添加缺失的 #include
  • [核心] base_decls.h 消除编译器警告
  • [核心] 在 bind 之后、listen 之前设置 socket 权限
  • [核心] 如果后端服务器配置包含 '_' 则发出警告
  • [mod_extforward] PROXY 协议和 SSL_CLIENT_VERIFY
  • [核心] 针对 AIX mmap 定义的变通方法
  • [mod_accesslog] 每 4 秒刷新访问日志
  • [mod_cgi] 修复正确执行解释器的错误
  • [mod_fastcgi] 修复流式传输最小缓冲区时的返回问题
  • [核心] 尝试消除 coverity 误报
  • [核心] 尝试消除 coverity 误报
  • [核心] 尝试消除 LEDE 中的编译器警告
  • [核心] SIGCHLD handle_waitpid 模块钩子
  • [mod_rrdtool] handle_trigger 返回 HANDLER_GO_ON
  • [mod_openssl] ssl.read-ahead="disable" 用于流
  • [mod_cgi] 在 CGI 退出时添加 FDEVENT_IN
  • [mod_cgi] 进程退出后省略 cgi_handle_fdevent
  • [mod_webdav] 检查 HAVE_UUID 是否使用 -luuid
  • [核心] 调整 li_rand_pseudo* 接口
  • [mod_wstunnel] 修复配置解析错误
  • [核心] fdevent setsockopt() 辅助函数
  • [核心] 使 strftime_cache_get() 成为 16 元素缓存
  • [核心] 如果流式传输到后端,禁用 Nagle
  • [核心] 修复 HTTP 分块输入时触发的断言 (修复 #2822)
  • [mod_wstunnel] 修复 NULL 指针解引用
  • [algo_sha1] 修复编译中断和警告
  • [lemon] 修复 gcc implicit-fallthrough 警告
  • [核心] URI scheme 不区分大小写
  • [网络] 不向 unix socket 路径追加端口
  • [单元测试] 整合 base64 测试代码
  • [核心] 对 AF_UNIX 使用 sun_path 作为地址字符串 (修复 #2826)
  • [核心] 更简洁的代码; 从 network.c 中移除 goto
  • [核心] /dev/stdin 监听器用于 inetd 等待 yes
  • [核心] DNS 解析后比较监听地址
  • [核心] 内联 chunkqueue_is_empty()
  • [核心] 限制 TCP_CORK 的使用
  • [核心] 如果 rd 较小,则从 http_response_read 返回
  • [核心] 网关可能在读取主体前升级连接
  • [mod_wstunnel] 如果是 bin 则设置 Sec-WebSocket-Protocol
  • [mod_wstunnel] 移除无效的追加 '\0'
  • [核心] 消除 coverity 警告
  • [核心] 处理 poll 超时后待关闭的文件描述符 (修复 #2827)
  • [核心] 修复 config 中 $REQUEST_HEADER[...] 解析问题 (#1556)
  • [mod_dirlisting] 自定义 js 日期解析函数 (修复 #2823)
  • [核心] 如果 create_env 返回,则移除 fd 兴趣
  • [mod_openssl] 复制更大的 SSL 数据包的数据
  • [mod_openssl] 移除错误的 SSL_set_shutdown()
  • [核心] 如果 !header-strict 则允许 LF 结束行
  • [核心] 为后端添加回 REQUEST_SCHEME
  • [核心] 从 fdevent_libev 移除 fdevent_sched_run (#2827)
  • [mod_openssl] ssl.read-ahead="disable" 默认
  • [核心] 调整解析器以进行有效变量扩展
  • [cmake] 处理 WITH_WEBDAV_LOCKS 选项
  • [cmake] 修复 attr 头文件检测和链接
  • [cmake] 将 mod_cml 与 memcached 链接
  • [核心] 可重现构建: 隐藏 __DATE__ __TIME__ (修复 #2828)
  • [核心] 性能: 更高效的 fdevent_sched_run()
  • [核心] 将 DNS 转换为 IP 字符串以进行条件套接字比较

外部引用

gstrauss 7年多前 更新 · 2 次修订