在编写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命令,使其仅列出虚拟主机/端口?
谢谢!
答案 0 :(得分:0)
此方法对我有用:nginx -T 2>/dev/null | grep "server_name " | awk '{print $2}'
但这取决于您的配置结构。但是无论如何,这种构造:nginx -T 2>/dev/null | grep "server_name "
应该为您提供所有server_names的列表。