双栈 Lighttpd 无需重复 SSL 配置

3 ipv6 lighttpd

我正在尝试 Lighttpd,但偶然发现了一个小但非常烦人的问题;IPv6 配置一团糟,需要您将 SSL 设置复制两次;自己看看

# listen to ipv4
server.bind = "0.0.0.0" 
server.port = "80" 

# listen to ipv6
$SERVER["socket"] == "[::]:80" {  }

# if you need ssl
$SERVER["socket"] == "0.0.0.0:443" { <here your ssl options> }
$SERVER["socket"] == "[::]:443" { <here your ssl options again> } // sadness
Run Code Online (Sandbox Code Playgroud)

有谁知道避免这种情况的方法吗?我会说如果有这样的方式它会在文档中,但是在看到如何使用空条件块绑定到额外的套接字之后,如果有其他一些“魔法”和未记录的方法来绑定我不会感到惊讶实现我想要的。

我尝试了多种设置server.bind[::]or 的组合0.0.0.0,将条件设置为[::]:443,0.0.0.0:443或者简单地:443,但我总是最终丢失了一个 HTTPS 套接字,无论是通过 IPv4 还是 IPv6 取决于组合(无法发布确切的结果,我没有跟踪他们,重做测试很烦人)。

seb*_*bix 7

您可以使用变量并包含文件中的配置,请参阅核心模块的配置文件语法。我们可以在这里使用后者:

$SERVER["socket"] == "0.0.0.0:443" { include "ssl.conf" }
$SERVER["socket"] == "[::]:443" { include "ssl.conf" }
Run Code Online (Sandbox Code Playgroud)

然后在中进行配置ssl.conf

ssl.engine  = "enable"
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
ssl.pemfile = "/etc/ssl/private/example.pem" 
ssl.ca-file = "/etc/ssl/certs/example.crt" 
Run Code Online (Sandbox Code Playgroud)