lighttpd 1.4: Включить схему в www Конфигурация перенаправления -to-no-www с исключением пути

Я использую lighttpd 1.4.45 в системе на основе Debian и имею 10-no-www.conf (из /etc/lighttpd/conf-available/10-no-www.conf в пакете lighttpd ) используется для перенаправления "www. "to" ".

Кроме того, я использую certbot с методом проверки" webroot "(для Let's Encrypt). Поэтому я хочу, чтобы все запросы к /. Well-known / acme-challenge / * не перенаправлялись (поэтому у меня есть отдельный корневой каталог для www. и домен не 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" )
    }
  }
}

Хотя это работает, оно выглядит излишне многословным - - есть ли способ параметризовать сопоставление схем, чтобы я мог делать это одним блоком вместо двух?

0
задан 3 March 2019 в 13:00
1 ответ

Следующее должно работать само по себе, поскольку lighttpd в настоящее время не поддерживает схемы, кроме «http» и «https»:

  $HTTP["url"] !~ "^/.well-known/acme-challenge/.*$" {
    $HTTP["host"] =~ "^www\.(.*)" {
      url.redirect = ( "^/(.*)" => "https://%1/$1" )
    }
  }

Примечание: lighttpd добавил поддержку TLS-ALPN-01 в lighttpd 1.4.53. Последний на данный момент lighttpd - это lighttpd 1.4.55. TLS-ALPN-01 рекомендуется для использования с Let's Encrypt.

1
ответ дан 7 February 2020 в 04:25

Теги

Похожие вопросы