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:ipv4ipv4:portipv4/netipv4/net:port
  • IPv6 上的 TCP:ipv6ipv6/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";