Список всех сайтов nginx из конфигурации - PullRequest
0 голосов
/ 21 мая 2019

При написании сценария php мне нужно перечислить все сайты nginx (vhosts), которые настроены на веб-сервере, с портами и флагом, если конкретный vhost включен sll.

Я могу запустить, а затем проанализировать nginx -t вывод. Сначала я пытался использовать регулярные выражения, но проблема в том, что nginx может использовать разные отформатированные конфигурации, так что это может быть так

server {
  server_name blah;
  listen 433 http2 ssl;
...
}

или как это

server { server_name blah; listen 433 http2 ssl; root /siteroot1; listen 80; location / { ... } }

, поэтому проблема в том, что pareser не будет одурачен некоторыми дополнительными пробелами или встроенными блоками.

Другой подход состоит в том, чтобы обходить символы один за другим и реализовывать их с количеством проверок strpos. Опять же, он может быть чувствительным к форматированию.

Может ли быть какое-либо готовое решение? Или, может быть, какая-то другая команда nginx, такая как args, которая перечисляет только vhosts / ports?

Спасибо!

1 Ответ

0 голосов
/ 21 мая 2019

Этот подход работает для меня: nginx -T 2>/dev/null | grep "server_name " | awk '{print $2}'

Но это зависит от вашей структуры конфигов. Но в любом случае эта конструкция: nginx -T 2>/dev/null | grep "server_name " должна дать вам список всех имен серверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...