Как настроить модульный конфиг lighttpd для нескольких vhosts

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

  • сервер должен привязаться к общедоступной сетевой карте и прослушивать порт 80 для публичных хостов
  • он также должен прослушивать порт 81 только для связи machine2machine
  • дополнительно он должен быть привязан к сетевой карте во внутренней сети (оба порта 80/81)
  • Vhosts должны быть определены в отдельных файлах в conf-enabled/vhostN.conf

Поэтому я настроил это следующим образом (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

Vhosts настроены в отдельных файлах в 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"] Директивы должны быть объединены, чтобы избежать необходимости дублировать один и тот же vhost дважды и инкапсулировать кучу именованных vhosts, таким образом избегая необходимости else? Я проверил с || оператор, но это не сработало.

Есть идеи?

0 ответов

Другие вопросы по тегам