插件接口¶
- 目录
- 插件接口
描述¶
插件允许您在不更改 Web 服务器核心的情况下增强 lighttpd 的功能。它们可以在启动时加载,并且可以改变 Web 服务器行为的几乎任何方面。
插件入口点¶
Lighttpd 有 16 个钩子,它们在请求执行的不同状态下使用。
服务器范围钩子¶
- init
插件加载时调用 - cleanup
插件卸载时调用 - set_defaults
需要处理配置时调用 - handle_trigger
每秒调用一次 - handle_sighup
服务器收到 SIGHUP 信号时调用
连接范围钩子¶
这些钩子大多在连接结构中的某些字段设置后,在 http_response_prepare()
中调用。
- handle_uri_raw
在 uri.path_raw, uri.authority 和 uri.scheme 设置后调用 - handle_uri_clean
在 uri.path(一个不含..和%20的干净 URI)设置后调用 - handle_docroot
在获取 docroot 的逻辑路径处理结束时调用 - handle_subrequest_start
在物理路径设置并检查后调用 - handle_subrequest
在http_response_prepare()
结束时调用 - handle_physical_path
在物理路径创建且未找到此请求的其他处理器后调用 - handle_request_done
请求完成时调用 - handle_connection_close
连接需要关闭时调用 - handle_joblist
在 connection_state_engine 再次退出且必须调用插件内部处理程序时调用 - connection_reset
连接结构需要清理时调用
插件接口¶
*_plugin_init¶
每个插件都有一个唯一命名的函数,在插件加载后调用。它用于使用一些有用的数据设置 ``plugin`` 结构。- 插件名称
name
- 所有钩子
在 init 函数中不应触及 data
字段和 lib
。 lib
是来自 dlopen 的库句柄,而 data
将是内部插件数据的存储。
返回:0 (未处理)
init¶
插件函数的第一个实际调用是 init 钩子,它用于设置内部插件数据。内部插件被分配 *_plugin_init 描述中提到的 ``data`` 字段。
返回:指向内部插件数据的指针。
cleanup¶
cleanup 钩子在插件卸载之前调用。它旨在释放所有在 ``init`` 或插件其他地方分配但尚未释放的缓冲区,并关闭所有已打开但尚未关闭的句柄。
返回:如果正常,返回 HANDLER_GO_ON(未处理)
set_defaults¶
set_defaults 是您进入配置文件解析的入口点。它应该将选项列表传递给 ``config_insert_values`` 并检查插件配置是否有效。如果尚未有效,它应该设置有用的默认值,或者返回 HANDLER_ERROR 并附带错误消息。
返回:- 如果正常,返回 HANDLER_GO_ON
- HANDLER_ERROR 将终止 lighttpd
connection_reset¶
在每个请求结束时调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 错误时返回 HANDLER_ERROR
handle_trigger¶
每秒调用一次
返回:- 如果正常,返回 HANDLER_GO_ON
- 错误时返回 HANDLER_ERROR
handle_sighup¶
收到 SIGHUP 信号时调用(循环日志文件等)
返回:- 如果正常,返回 HANDLER_GO_ON
- 错误时返回 HANDLER_ERROR
handle_uri_raw¶
在 uri_raw 设置后调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 如果最终输出已准备好,返回 HANDLER_FINISHED
- 错误时返回 HANDLER_ERROR
handle_uri_clean¶
在 uri.path 设置后调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 如果最终输出已准备好,返回 HANDLER_FINISHED
- 错误时返回 HANDLER_ERROR
handle_docroot¶
需要 docroot 时调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 如果最终输出已准备好,返回 HANDLER_FINISHED
- 错误时返回 HANDLER_ERROR
handle_subrequest_start¶
在 physical.path 设置后调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 如果最终输出已准备好,返回 HANDLER_FINISHED
- 错误时返回 HANDLER_ERROR
handle_subrequest¶
如果 subrequest_start 请求了 COMEBACK 或 WAIT_FOR_EVENT,则调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 如果最终输出已准备好,返回 HANDLER_FINISHED
- 错误时返回 HANDLER_ERROR
handle_physical_path¶
在 physical.path 设置后调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 如果最终输出已准备好,返回 HANDLER_FINISHED
- 错误时返回 HANDLER_ERROR
handle_request_done¶
在请求结束时调用(日志记录、统计等)
返回:- 如果正常,返回 HANDLER_GO_ON
- 错误时返回 HANDLER_ERROR
handle_connection_close¶
连接终止时调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 错误时返回 HANDLER_ERROR
handle_joblist¶
连接状态改变时调用
返回:- 如果正常,返回 HANDLER_GO_ON
- 错误时返回 HANDLER_ERROR