
Я тестирую 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
Кто-нибудь знает, как этого избежать? Я бы сказал, что если бы такой способ был, он был бы в документации, но, увидев, как пустые условные блоки могут использоваться для привязки к дополнительным сокетам, я бы не удивился, если бы существовал какой-то другой «волшебный» и недокументированный метод достижения того, что мне нужно.
Я пробовал несколько комбинаций настроек server.bind
либо [::]
, либо 0.0.0.0
, устанавливая условные операторы [::]:443
либо 0.0.0.0:443
просто :443
, но всегда получалось так, что один из сокетов HTTPS отсутствовал, либо по IPv4, либо по IPv6 в зависимости от комбинации (не могу опубликовать точные результаты, я их не отслеживал, а повторное проведение тестов довольно утомительно).
решение1
Вы можете использовать переменные и включать конфигурацию из файлов, см.Синтаксис файла конфигурации для основного модуля. Мы можем использовать последний вариант здесь:
$SERVER["socket"] == "0.0.0.0:443" { include "ssl.conf" }
$SERVER["socket"] == "[::]:443" { include "ssl.conf" }
и затем выполните настройку в 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"