项目

通用

个人资料

操作

版本信息

  • 版本: 1.4.65
  • 上一版本: 1.4.64
  • 分支: 1.4
  • 状态: 稳定版
  • 发布目的: 错误修复
  • 发布经理: gstrauss
  • 发布日期: 2022-06-07

1.4.64版的重要变更

基于 HTTP/2 的 WebSockets, 错误修复

亮点

  • 基于 HTTP/2 的 WebSockets
    RFC 8441 使用 HTTP/2 引导 WebSockets
  • HTTP/2 PRIORITY_UPDATE
    RFC 9218 HTTP 可扩展优先级方案
  • lighttpd.conf 中的前缀/后缀条件
  • mod_webdav 安全的部分 PUT
    webdav.opts += ("partial-put-copy-modify" => "enable")
  • mod_accesslog 选项: accesslog.escaping = "json"
  • mod_deflate libdeflate 构建选项
  • 通过 HTTP/2 加快请求体上传速度

行为变更

  • 将默认的 server.max-keep-alive-requests = 1000 调整为
    以适应不断增长的 HTTP/2 和 web2/web3 应用使用
    (之前的默认值为 100)
  • mod_status HTML 现在输出中包含 HTTP/2 控制流 ID 0
    其中包含 HTTP/2 连接的总计数
    (这些行可以通过 URL '*' 识别,是 "PRI *" 前缀的一部分)
    替代方案: https://wiki.lighttpd.net/ModMagnetExamples#lua-mod_status
  • MIME 类型 application/javascript 被转换为 text/javascript (RFC 9239)

未来计划的行为变更

  • TLS 模块将默认使用更强大、更现代的加密算法,并且
    将默认允许客户端优先选择加密算法。
    允许客户端优先选择加密算法是安全的,配合
    使用支持 PFS 的现代加密算法的限制,并且
    对没有 AES 硬件加速的移动用户来说更好。
    旧版加密算法仍可通过 lighttpd.conf 中的
    `ssl.openssl.ssl-conf-cmd` 进行配置,只要底层 TLS 库支持这些加密算法。 https://wiki.lighttpd.net/Docs_SSL
    底层的 TLS 库。https://wiki.lighttpd.net/Docs_SSL
    新默认值
    "CipherString" => "EECDH+AESGCM:AES256+EECDH:CHACHA20:!SHA1:!SHA256:!SHA384",
    "Options" => "-ServerPreference"
    旧默认值
    "CipherString" => "HIGH",
    "Options" => "ServerPreference"
  • 已弃用的 TLS 选项将被移除。
    - ssl.honor-cipher-order
    - ssl.dh-file
    - ssl.ec-curve
    - ssl.disable-client-renegotiation
    - ssl.use-sslv2
    - ssl.use-sslv3
    请参阅 https://wiki.lighttpd.net/Docs_SSL 了解使用
    `ssl.openssl.ssl-conf-cmd` 进行替换,但更推荐使用 lighttpd 默认值。

下载

1.4.64版以来的变更

  • [构建] meson: 修复变量名中的拼写错误
  • [构建] autoconf: 报告是否使用 zstd 构建
  • [构建] meson -Dlua_version=... 用于指定 lua 版本
  • [核心] 避免在 MacOS <10.12 上使用 CCRandomGenerateBytes (修复 #3140)
  • [核心] 与 CCRandomGenerateBytes 一起使用不同的变量名 (修复 #3141)
  • [核心] 使用 SHELL 或 /bin/sh 解析 conf 命令
  • [核心] 修复 openssl 3.0 的 HMAC
  • [mod_webdav] 在 OSX <10.12 上不使用 COPYFILE_CLONE_FORCE (修复 #3142)
  • [mod_deflate] 修复在 If-None-Match 的情况下返回 304 (修复 #3143)
  • [核心] Illumos epoll 与 lighttpd 实现不兼容
  • [核心] 允许 HTTP/1.0 使用 Range 的功能标志
  • [mod_mbedtls] 为 mbedtls 3.2.0+ 设置 usekeysize
  • [mod_deflate] 收集 mmap 代码
  • [mod_deflate] 使用 libdeflate 和 mmap 的原型
  • [mod_deflate] --with-libdeflate 以使用 libdeflate
  • [mod_deflate] 将输入字节标记为 const
  • [核心] sys-setjmp.[ch]
  • [mod_magnet] 在 setjmp 前检查 lighty.result.content
  • [核心] sys-time.h 中包含守护的一致性
  • [核心] network_write_file_chunk_remap 独立函数
  • [多模块] 使用新的 sys_setjmp_eval3() 接口
  • [多模块] chunk.c 对 0 长度块的严格检查
  • [多模块] struct chunk 和 mmap 的共享代码
  • [mod_deflate] 如果可用,使用 pread
  • [mod_deflate] 改进文件块压缩循环
  • [核心] 启动时为 h2 响应头准备 server_tag
  • [mod_magnet] 除非必要,否则延迟 req_env 初始化
  • [mod_magnet] 附加内容错误后重置
  • [mod_magnet] lua_tointegerx() 避免引发错误
  • [mod_mbedtls] 使用较新的 mbedtls 3.2.0+ 接口
  • [mod_magnet] 调整热路径以进行更多内联
  • [mod_magnet] 收集用于 magnet lua_State 初始化的 chk
  • [mod_magnet] 使用 lua_getfield() 返回的类型
  • [核心] chunk_file_pread() 用于封装 pread()
  • [核心] 如果强制使用 HTTP/1.0 响应,则禁用 keep-alive
  • [mod_magnet] 使用 lua_getextraspace() 存储 r
  • [核心] 如果可用,回退到 getauxval(AT_RANDOM)
  • [mod_magnet] 在堆栈上保留消息处理程序
  • [文档] 更新外部链接
  • [mod_magnet] 传递 lighty 表索引,延迟弹出
  • [mod_magnet] 清除并重用 script-env 表
  • [mod_magnet] 重新加载脚本时清除堆栈
  • [mod_magnet] 在接口中使用 lua_isnoneornil()
  • [mod_magnet] 修复 lighty.c.cookie_tokens()
  • [mod_magnet] 修复 lighty.c.urldec_query()
  • [mod_magnet] 移除重复的 NULL 检查
  • [mod_magnet] 调整 magnet_lighty_result_get()
  • [mod_magnet] magnet_tmpbuf_acquire(),release()
  • [mod_magnet] lighty.c.quotedenc(),dec() 函数
  • [mod_magnet] 修复 header,content 旧版表清除问题
  • [mod_cgi] cgi.local-redir 通过 fnptr 重置请求
  • [核心] 将 plugins_*() 函数隔离到主服务器
  • [mod_wolfssl] wolfssl v5.0.0 定义 DH_set0_pqg()
  • [mod_auth] 在 require 配置中保存大小写差异
  • [mod_magnet] magnet_push_quoted_string 共享代码
  • [mod_magnet] lighty.c.header_tokens 便捷函数
  • [核心] accept() 后填充 un.sun_path (修复 #3147)
  • [mod_extforward] 调整 HTTP/2 的信任检查
  • [mod_proxy] 调整旧版 X-* 头的处理
  • [核心] 允许环境变量为空值 (修复回归)
  • [TLS] debug.log-ssl-noise 配置类型一致性
  • [mod_magnet] 允许通过 nil 移除 req_env 元素
  • [核心] 针对非常旧的 gcc,glibc 的编译器变通方法
  • [mod_mbedtls] 使用较新的 mbedtls 3.2.0+ 接口
  • [mod_ssi] 检查 http_chunk_transfer_cqlen 是否出错
  • [核心] chunkqueue_steal() 处理意外的 0 长度
  • [核心] 在 h2 初始化时丢弃 REFUSED_STREAM 的 DATA
  • [多模块] 基于 HTTP/2 的 WebSockets (修复 #3151)
  • [多模块] 立即连接后端进行流传输
  • [核心] 在检查连接前确保 socket 已就绪
  • [核心] 减少 Upgrade 后端连接的跟踪
  • [核心] 调整 TLS 连接上使用 TCP_CORK 的时机
  • [mod_cgi] 如果可能 Upgrade,则禁用输入优化
  • [mod_cgi] 如果 Upgrade,立即启动 CGI
  • [mod_wolfssl] wolfssl v5.0.0 添加 ASN1_TIME_diff()
  • [mod_openssl] libressl v3.5.0 添加 ASN1_TIME_diff
  • [TLS] 如果叶证书读取不活跃/已过期则发出警告
  • [核心] 更严格符合即将到来的 HTTP/2 修订版
  • [构建] -D_DEFAULT_SOURCE 在构建中的一致性
  • [mod_extforward] 支持带 "[]" 的额外 IPv6 语法
  • [核心] cygwin 和 lmingw 的构建修复
  • [核心] 提前短路解析 h2 尾部
  • [核心] 重新格式化 h2.h 以实现更清晰的枚举添加
  • [核心] 整合 log-state-handling 的跟踪
  • [核心] request_config 位掩码用于更小的结构体
  • [核心] 前缀 (=^), 后缀 (=$) 配置条件 (修复 #3153)
  • [核心] 收紧配置解析循环
  • [核心] 将简单配置条件正则表达式转换为前缀/后缀
  • [测试] 在不使用 pcre 构建时也能运行测试
  • [核心] 允许不使用 pcre 的重定向、重写扩展替换
  • [mod_sockproxy] 重置 http 版本,避免罕见崩溃 (修复 #3152)
  • [核心] HTTP/2 PRIORITY_UPDATE 帧 (实验性)
  • [核心] 发送 HTTP/2 SETTINGS_NO_RFC7540_PRIORITIES
  • [核心] 更严格检查 HTTP/2 GOAWAY 帧大小
  • [mod_mbedtls] 使用较新的 mbedtls 3.2.0+ 接口
  • [mod_webdav] 选择通过复制/重命名进行部分 PUT
  • [核心] 静默编译器警告
  • [多模块] 识别 HTTP QUERY 方法
  • [多模块] 限制 socket 配置选项的范围
  • [核心] 修复从字符串读取大整数时的配置拼写错误
  • [核心] h2 优先级排序:紧急性,递增,然后流 ID
  • [核心] 随 .css, .js 重新优先级发送 Priority 响应头
  • [多模块] 重置 http 版本,避免罕见崩溃 (修复 #3152)
  • [核心] 延迟响应 http 认证的无效凭据
  • [核心] 仅当 con->h2 时执行 connection_state_machine_h2
  • [核心] 默认 server.max-keep-alive-requests 1000
  • [mod_magnet] 在函数的第一个上值中设置脚本环境变量
  • [mod_magnet] 将 lighty.r 重写为 userdata 表
  • [mod_status] 使用 con->h2 而非 r->http_version
  • [mod_setenv] 清理用户提供的粗糙头
  • [核心] 移除 plugin.h 中重复的函数声明
  • [mod_status] 修复 HTTP/2 写入字节计数问题
  • [mod_magnet] 在 Unix 域上没有本地服务器端口
  • [mod_extforward] Unix 域套接字的严格检查
  • [核心] 抽象套接字的支持草图
  • [mod_magnet] magnet_plugin_stats_table() 函数
  • [mod_magnet] magnet_script_setup_global_state() 函数
  • [mod_magnet] 带有新函数的 lighty.server.* 表
  • [mod_accesslog] 不重复计算 %I 中的头长度
  • [mod_magnet] 减少 magnet_env_get_id() 扫描
  • [mod_magnet] 收紧 magnet_env_get_buffer_by_id()
  • [mod_status] r->state 字符串的可重用代码
  • [核心] r->state 字符串的可重用代码
  • [mod_magnet] 向 lua 脚本公开 r->state
  • [mod_magnet] 收紧 magnet_env_set()
  • [mod_magnet] lighty.r.req_item[] 访问器
  • [mod_magnet] 向 lua 脚本公开 r->keep_alive
  • [mod_magnet] lighty.c.hrtime 高精度时间
  • [mod_magnet] lighty.r.resp_body.get
  • [mod_magnet] 弃用 r.req_attr["response.*]
  • [mod_magnet] uri_path_raw 的独立函数
  • [mod_magnet] lighty.c.stat 高精度时间
  • [mod_magnet] 格式化多行错误回溯
  • [mod_magnet] 调整 p->conf.stage 检查
  • [mod_magnet] 进一步隔离旧版 API 结果表
  • [核心] buffer_append_char() 便捷函数
  • [mod_accesslog] accesslog.escaping = "json"
  • [多模块] 使用 buffer_append_char()
  • [mod_accesslog] 从 %{}t 中移除开始/结束标签
  • [核心] 修复 configparser_simplify_regex() 注释
  • [多模块] 简化 bytes_in/bytes_out 计数
  • [mod_accesslog] 重新排序 switch() 中的字段
  • [核心] 移除未使用的 srv->con_* 计数器
  • [mod_magnet] 对 r->server_name 的只读访问
  • [核心] buffer_append_bs_escaped()
  • [核心] buffer_append_string_c_escaped ASCII 优化
  • [mod_magnet] 退格符转义编码/解码
  • [mod_status] 显示带有请求的 HTTP/2 控制流
  • [多模块] 对 Content-Type 使用首选语法
  • [文档] 重新生成 doc/config/conf.d/mime.conf
  • [多模块] 将 status_counter 重命名为 plugin_stats
  • [核心] 功能标志 server.metrics-high-precision
  • [mod_magnet] 消除 coverity 误报
  • [mod_wolfssl] 针对 OpenWRT 的编译修复
  • [mod_webdav] 在不存在时使用 If-None-Match: *
  • [mod_magnet] r.req_body .collect .get .set .add
  • [mod_cgi] 修复故障错误处理程序的检测 (修复 #3157)
  • [核心] "url-invalid-utf8-reject" 规范化选项
  • [mod_magnet] 如果是 modsec3,则跳过请求体收集警告
  • [构建] 更新描述以移除旧的 lua 版本
  • [核心] 如果 context->basedir 为空,则使用当前目录
  • [多模块] application/javascript text/javascript
  • [核心] 优雅重启后重置内部标志
  • [TLS] 从全局范围继承 ssl.engine
  • [核心] 在 SIGUSR1 后避免 server.use-ipv6 警告
  • [mod_webdav] 集合上的 PROPFIND 备用处理
  • [mod_mbedtls] 修复 crt 链构建逻辑
  • [核心] h2 SETTINGS_INITIAL_WINDOW_SIZE 64k (修复 #3089)
  • [核心] 将会话窗口大小增加到 256k
  • [核心] h2: 避免发送小的 WINDOW_UPDATE 帧
  • [核心] h2: 避免发送微小的 DATA 帧
  • [核心] 使用 Priority 头更新缓存表
  • [测试] http_header.c 和 http_kv.c 的测试存根

外部引用

gstrauss 更新于 大约3年前 · 1 次修订