列出配置中的所有Nginx网站

时间:2019-05-21 09:26:59

标签: php parsing nginx

在编写php脚本时,我需要列出在Web服务器上设置的所有nginx站点(虚拟主机),并带有端口和标记(如果特定的虚拟主机启用了sll功能)。

我可以运行然后解析nginx -t输出。一开始,我尝试使用regexps,但是问题是,nginx可以使用不同格式的配置,所以可以这样

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

或类似的

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

所以解析器不会被一些额外的空格或内联块所欺骗是一个问题。

另一种方法是逐个遍历字符,并通过多次strpos检查来实现。同样,它可能对格式敏感。

有没有可以立即使用的解决方案?还是其他一些像args这样的nginx命令,使其仅列出虚拟主机/端口?

谢谢!

1 个答案:

答案 0 :(得分:0)

此方法对我有用:nginx -T 2>/dev/null | grep "server_name " | awk '{print $2}'

但这取决于您的配置结构。但是无论如何,这种构造:nginx -T 2>/dev/null | grep "server_name "应该为您提供所有server_names的列表。