Lighttpd 代理,以及 letsencrypt 续订

Lighttpd 代理,以及 letsencrypt 续订

我需要一些这方面的帮助。我在同一个 lighttpd 配置中拥有多个域,我将迁移到 letsencrypt 证书,因此我在虚拟服务器上进行模拟。

我有以下内容:

$HTTP["url"] !~ "^/.well-known/acme-challenge/.*$" {

        $HTTP["host"] == "autosslxlm3.ddns.net" {

                $SERVER["socket"] == ":443" {
                        ssl.engine = "enable"
                        ssl.ca-file = "/etc/letsencrypt/live/autosslxlm3.ddns.net/chain.pem"
                        ssl.pemfile = "/etc/letsencrypt/live/autosslxlm3.ddns.net/web.pem"
                }
                proxy.balance = "round-robin"
                proxy.server = ("" => (
                        ( "host" => "127.0.0.1", "port" => 8888 ))
                )
        }
}

如果我以 https 访问,我会在 lighttpd error.log 中收到以下错误:

TLS 服务器名称 autosslxlm3.ddns.net 没有证书/私钥

这不是真的,因为它在那里,如果我删除

$HTTP["url"] !~ "^/.well-known/acme-challenge/.*$" {

(当然还有底部的右括号),它在 https 中完美运行!但是,这将无法更新证书,因为 /.well-known/... 将被转发到端口 8888 上运行的内容,而它应该转到系统上的某个文件夹。

使用完整配置时,如果我还更改 pem 文件位置中的任何内容,则 lighttpd 将无法启动,因此,它可以正确读取配置,但第一行证书被视为“无效”或不存在。

lighttpd/1.4.53

提前致谢

答案1

在顶层配置套接字,不嵌套在其他条件中。

$SERVER["socket"] == ":443" { ... }

发生 TLS 和证书选择HTTP 请求 URL 已知,因此$HTTP["url"]条件无法计算为真,直到TLS 连接已建立。

相关内容