Angel 配置
lighttpd2 由两个主要的可执行文件组成:angel (lighttpd2
) 和 worker (lighttpd2-worker
)。主配置由 worker 使用,本章描述 angel 的配置。
标准发行版应在 /etc/lighttpd2/angel.conf
中安装一个 angel 配置,其中包含合理的默认值,适用于大多数基本设置。
Angel 概念
您可以在没有 angel 的情况下启动 worker,但 angel 提供了一些有用的功能
- angel 本身通常以 root 身份运行(例如,绑定到特权端口需要此权限),但会以降低的权限(通常使用
www-data
等用户)启动 worker。worker 本身不执行任何权限降低操作。 - angel 可以使用 root 权限为 worker 打开/创建日志文件
- angel 支持 worker 的平滑重启以重新加载配置:它会启动一个新实例,如果新实例成功启动(检查配置等),它将替换旧实例。旧实例将完成剩余的请求。
由于 angel 负责创建监听网络套接字,因此它可以始终保持它们打开,并且不会丢失任何请求。 - angel 还执行简单的监控:如果 worker 崩溃,angel 将重新启动它。
配置项
配置语法与主配置非常相似,尽管它没有操作块、设置块、条件和作用域。
用户
降低权限以启动 worker
user username;
- 用户名
- 启动 worker 时将权限降低到的用户名
此项只能指定一次;如果未指定,它将完全不降低权限,这在 angel 本身不以 root 身份运行时很有用。不言而喻,您绝不应该以 root 身份运行 worker。
该用户名还用于查找用户所属的所有组。
示例
user "www-data";
组
降低权限以启动 worker
group groupname;
- 组名
- 启动 worker 时将权限降低到的组名
指定要将权限降低到的主组;一个进程可以有多个组,其他组由 user
指定的用户所属的组给出。
默认是 user
指定用户的主组,或者根本不降低权限。
示例
group "www-data";
可执行文件
指定 worker 可执行文件路径
binary path;
- 路径
- lighttpd2-worker 可执行文件的路径
仅当您根本没有安装可执行文件(用于测试)时才需要此项。
示例
binary "/home/source/lighttpd2/autobuild/src/main/lighttpd2-worker";
配置
指定主配置文件路径
config path;
- 路径
- 主配置文件的路径
默认使用 /etc/lighttpd2/lighttpd.conf
。
示例
config "/etc/lighttpd2-test/lighttpd.conf";
Lua 配置
指定 Lua 配置文件路径
luaconfig path;
- 路径
- Lua 配置文件的路径
默认使用普通配置文件;您必须使用普通配置文件或 Lua 配置文件。
示例
luaconfig "/etc/lighttpd2/lighttpd.lua";
模块路径
指定包含 worker 模块的目录路径
modules_path path;
- 路径
- 包含 worker 模块的目录的路径
仅当您根本没有安装可执行文件(用于测试)时才需要此项。对于 autotool 构建,“真实”的模块可执行文件位于 .libs
子目录中。
示例
modules_path "/home/source/lighttpd2/autobuild/src/modules/.libs";
包装器
使用其他命令作为 worker 命令的前缀
wrapper wrappers;
- 包装器
- 包装器命令及其参数的路径
此项将所有给定字符串追加到命令前缀列表(该列表最初为空)。在启动 worker 之前,worker 的可执行文件路径及其参数(配置、模块路径)也会被追加。
包装器可用于通过 valgrind、strace 等工具运行 worker。
示例
# in multiple lines
wrapper [ "/usr/bin/valgrind" ];
wrapper [ "--leak-check=full", "--show-reachable=yes" ]
wrapper [ "--leak-resolution=high" ];
# or as one
wrapper [ "/usr/bin/valgrind", "--leak-check=full", "--show-reachable=yes", "--leak-resolution=high" ];
环境变量
为 worker 添加环境变量
env vars;
- 变量
- 要为 worker 添加的环境变量列表
追加给定的环境变量列表(该列表最初为空),这些变量可以是 "var=xyz"
形式的字符串,也可以是 "var" => "xyz"
形式的键值对(键不能包含任何 =
)。
示例
# helps debugging with valgrind:
env [ "G_SLICE=always-malloc", "G_DEBUG=gc-friendly,fatal_criticals" ];
复制环境变量
从当前环境复制 worker 的环境变量
copy_env varnames;
- 变量名
- 要复制的环境变量名称列表
添加当前环境中的变量副本。默认情况下,所有变量都将被删除。
示例
env_copy [ "PATH" ];
最大核心文件大小
设置 worker 的核心文件大小限制
max_core_file_size limit;
- 限制
- 字节单位的限制
worker 可以创建的核心文件的最大大小(以字节为单位)。核心文件在 worker 崩溃时创建。
0 表示禁用核心文件,默认情况下不更改限制。
最大打开文件数
设置 worker 的最大打开文件数限制
max_open_files limit;
- 限制
- 最大打开文件数
worker 根据最大打开文件数限制最大连接数(最大连接数 = 最大打开文件数 / 4)。
默认情况下不更改限制。
示例
# max 4096 connections
max_open_files 16384;
允许监听
允许 worker 监听套接字
allow_listen list;
- 列表
- 网络掩码(CIDR)+可选端口或 Unix 域套接字地址列表
worker 使用 angel 绑定 TCP/Unix 套接字;angel 会检查这些绑定是否被允许。如果未指定 allow_listen
,则允许所有使用端口 80 或 443 的 TCP 绑定(IPv4 和 IPv6)。
IPv4 和 IPv6 使用不同的掩码(没有 IPv4 到 IPv6 的映射),CIDR 掩码的网络长度是可选的(默认为主机地址),端口也是可选的(如果省略,则允许 80 和 443 两个端口)。
格式
- IPv4 上的 TCP:
ipv4
、ipv4:port
、ipv4/net
、ipv4/net:port
- IPv6 上的 TCP:
ipv6
、ipv6/net
、[ipv6]
、[ipv6/net]
、[ipv6]:port
、[ipv6/net]:port
- Unix 域:
unix:/wildcard/path/to/*.socket
示例
仅允许 IPv4 和 IPv6 的 TCP 端口 8080,以及 Unix 域套接字 /run/lighttpd/internal.sock
。
allow_listen [ "0.0.0.0/0:8080", "[::/0]:8080" ];
allow_listen "unix:/run/lighttpd/internal.sock";