Назад | Перейти на главную страницу

Как настроить модульную конфигурацию lighttpd для нескольких хостов

У меня вопрос относительно lighttpd лучшие практики для настройки vhosts. Я хотел настроить модульную конфигурацию для нескольких vhosts с разделенными файлами конфигурации, чтобы иметь возможность легко включать / отключать определенные vhosts. Платформа - Debian 8.2 под управлением lighttpd 1.4.35. Требования следующие:

Итак, я установил следующее (1.2.3.4 - IP-адрес общедоступной сетевой карты, 10.0.0.1 - IP-адрес внутри частной сети). В центральном lighttpd.conf Сначала я определяю привязку сервера по умолчанию к обоим IP-адресам:

server.bind = "1.2.3.4"                 # public default server
server.port = 80
$SERVER["socket"] == "10.0.0.1:80" {}   # private default server

Хосты настроены в отдельных файлах под conf-enabled/, сказать vhost1.conf, vhost2.conf и т.д. Я попытался разделить следующие директивы по файлам конфигурации:

## This is for machine2machine communication on port 81 over the Internet
$SERVER["socket"] == "1.2.3.4:81" {
...
}
## This is for machine2machine communication on port 81 inside the private net
else $SERVER["socket"] == "10.0.0.1:81" {
...
}
## This is vhost 1, accessible through Internet and private network
else $HTTP["host"] =~ "^vhost1.do.main$" {
...
}
## This is vhost 2
else $HTTP["host"] =~ "^vhost2.do.main$" {
...
}

и так далее. Пока все работает, если поместить все в один большой файл конфигурации. Но когда я разбиваю конфиг на отдельные файлы, кажется, что else выдает синтаксические ошибки, поскольку не учитывается во включенных файлах cfg.

В то время else будет избыточным между разделами vhosts, запускаемыми HTTP Host заголовок, это не так в отношении $SERVER["socket"] раздел. Если бы я удалил else, можно было бы получить доступ ко всем vhosts через порт 81, унаследовав настройки для хоста m2m в дополнение к настройкам для именованных vhosts.

Кроме того, я не мог понять, как определить секцию для m2m comm всего в одном блоке с двумя $SERVER["socket"] директивы для двух IP-адресов, поэтому мне пришлось продублировать настройку для одного и того же виртуального хоста, привязанного к порту 81. Если есть способ объединить два $SERVER["socket"] директивы для одного раздела, я мог бы использовать сервер по умолчанию для порта 81 и окружить именованные vhosts $SERVER["socket"] привязка директивы к порту 80.

Итак, мои вопросы:

  1. Есть ли уловка, которую я не видел в документации, чтобы выполнить такую ​​настройку vhost с отдельными файлами cfg, что привело бы к тому же эффекту, что и использование else?
  2. Может два $SERVER["socket"] директивы должны быть объединены, чтобы избежать необходимости дублировать один и тот же виртуальный хост дважды и инкапсулировать группу именованных виртуальных хостов, что позволяет избежать необходимости else? Я тестировал || оператор, но это не сработало.

Любые идеи?