具有多个 IP 的 lighttpd,每个 IP 都有一个 UCC 证书和许多主机名

具有多个 IP 的 lighttpd,每个 IP 都有一个 UCC 证书和许多主机名

我想让 lighttpd 使用 UCC 证书,但我似乎无法找到正确的语法。

本质上,对于每个 IP 地址,我都有一个 UCC 证书和一堆主机名。

$SERVER["socket"] == "10.0.0.1:443" {
    ssl.engine                              = "enable"
    ssl.ca-file                             = "/etc/ssl/certs/the.ca.cert.pem"
    ssl.pemfile                             = "/etc/ssl/private/websitegroup1.com.pem"
    $HTTP["host"] =~ "mywebsite.com" {
            server.document-root    = /var/www/mywebsite.com/htdocs"
    }

上述代码对于一个主机名运行良好,但当我尝试设置另一个主机名(注意相同的 SSL 证书)时:

$SERVER["socket"] == "10.0.0.1:443" {
    ssl.engine                              = "enable"
    ssl.ca-file                             = "/etc/ssl/certs/the.ca.cert.pem"
    ssl.pemfile                             = "/etc/ssl/private/websitegroup1.com.pem"
    $HTTP["host"] =~ "anotherwebsite.com" {
            server.document-root    = /var/www/anotherwebsite.com/htdocs"
    }

...我收到此错误:Duplicate config variable in conditional 6 global/SERVERsocket==10.0.0.1:443: ssl.engine

有什么方法可以设置条件,以便只有当ssl.engine尚未启用时才启用它?或者我必须将所有 $HTTP["host"] 放在同一个 $SERVER["socket"] 中(这将使配置文件管理对我来说更加困难)还是有完全不同的方法可以做到这一点?

这也必须对多个 IP 重复进行(因此我会有一堆SERVER["socket"] == 10.0.0.2:443"等等),每个 IP 都有一个 UCC 证书和许多主机名。

我是否完全以错误的方式处理这个问题?我的目标是,当我拥有许多相关且可以共享 SSL 证书的网站时,节省 IP 地址,但仍然需要从适当的主机名(而不是单个 secure.mywebsite.com)获取自己的 SSL 可访问版本。

答案1

所以你只需要更改每个主机的文档根目录?你试过把主机匹配外部套接字匹配并且不重复套接字节?例如

$SERVER["socket"] == "10.0.0.1:443" {
    ssl.engine                              = "enable"
    ssl.ca-file                             = "/etc/ssl/certs/the.ca.cert.pem"
    ssl.pemfile                             = "/etc/ssl/private/websitegroup1.com.pem"
}

$HTTP["host"] =~ "mywebsite.com" {
    server.document-root    = /var/www/mywebsite.com/htdocs"
}

$HTTP["host"] =~ "anotherwebsite.com" {
    server.document-root    = /var/www/anotherwebsite.com/htdocs"
}

相关内容