При написании сценария 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?
Спасибо!