Как настроить модульный конфиг 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.
Итак, мои вопросы:
- Есть ли уловка, которую я не видел в документации, чтобы выполнить такую настройку vhost с отдельными файлами cfg, что дает тот же эффект, что и при использовании
else
? - Может два
$SERVER["socket"]
Директивы должны быть объединены, чтобы избежать необходимости дублировать один и тот же vhost дважды и инкапсулировать кучу именованных vhosts, таким образом избегая необходимостиelse
? Я проверил с||
оператор, но это не сработало.
Есть идеи?