Я пробую 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 в зависимости от комбинации (не могу опубликовать точные результаты, я не отслеживал их, и повторение тестов довольно раздражает).
Вы можете использовать переменные и включать конфигурацию из файлов, см. Синтаксис файла конфигурации для основного модуля. Мы можем использовать последнее здесь:
$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"