Configuration
lighttpd 1.4:在 www-to-no-www 重定向配置中包含方案,並排除路徑
我在基於 Debian 的系統上使用 lighttpd 1.4.45,並使用
10-no-www.conf
(包/etc/lighttpd/conf-available/10-no-www.conf
中的lighttpd
)將“www. <something> ”重定向到“ <something> ”。此外,我正在使用
certbot
“webroot”驗證方法(用於 Let’s Encrypt)。因此,我希望所有請求/.well-known/acme-challenge/*
不被重定向(所以我有一個單獨的 webrootwww.
和非www.
域,因為每個都有不同的 SSL 證書,即使www.
域只是用於重定向,它仍然需要有一個適當的SSL 證書工作)。這是原始內容(不適用於https,不排除acme-challenge部分):
$HTTP["host"] =~ "^www\.(.*)" { url.redirect = ( "^/(.*)" => "http://%1/$1" ) }
這就是我想出的:
$HTTP["scheme"] == "http" { $HTTP["url"] !~ "^/.well-known/acme-challenge/.*$" { $HTTP["host"] =~ "^www\.(.*)" { url.redirect = ( "^/(.*)" => "http://%1/$1" ) } } } $HTTP["scheme"] == "https" { $HTTP["url"] !~ "^/.well-known/acme-challenge/.*$" { $HTTP["host"] =~ "^www\.(.*)" { url.redirect = ( "^/(.*)" => "https://%1/$1" ) } } }
雖然這可行,但它看起來不必要地冗長——有沒有辦法參數化方案匹配,以便我可以在一個塊而不是兩個塊中完成它?
以下應該單獨工作,因為 lighttpd 目前不支持“http”和“https”以外的方案:
$HTTP["url"] !~ "^/.well-known/acme-challenge/.*$" { $HTTP["host"] =~ "^www\.(.*)" { url.redirect = ( "^/(.*)" => "https://%1/$1" ) } }
注意:lighttpd 在 lighttpd 1.4.53 中添加了對 TLS-ALPN-01 的支持。目前最新的 lighttpd 是 lighttpd 1.4.55。建議將 TLS-ALPN-01 與 Let’s Encrypt 一起使用。