theirritainer/nfigurator

NGINX配置文件处理库。

v1.0.2 2021-04-06 05:49 UTC

README

Build Status

Nfigurator

NGINX配置处理器

(c) 2021 Michael Tiel michael@tiel.dev
(c) 2017 Toms Seisums
(c) 2014-2016 Roman Piták roman@pitak.net

PHP Nginx配置文件处理器(解析器、创建器)。

安装

最佳安装方法是使用Composer依赖管理器。

php composer.phar require theirritainer/nfigurator

特性

美化打印

<?php Scope::fromFile('m1.conf')->saveToFile('out.conf');

配置创建

<?php
Scope::create()
    ->addDirective(Directive::create('server')
        ->setChildScope(Scope::create()
            ->addDirective(Directive::create('listen', 8080))
            ->addDirective(Directive::create('server_name', 'example.net'))
            ->addDirective(Directive::create('root', 'C:/www/example_net'))
            ->addDirective(Directive::create('location', '^~ /var/', Scope::create()
                    ->addDirective(Directive::create('deny', 'all'))
                )->setCommentText('Deny access for location /var/')
            )
        )
    )
    ->saveToFile('example.net');

文件example.net

server {
    listen 8080;
    server_name example.net;
    root C:/www/example_net;
    location ^~ /var/ { # Deny access for location /var/
        deny all;
    }
}

注释处理

简单注释

<?php echo new Comment("This is a simple comment.");

输出

# This is a simple comment.

多行注释

<?php
echo new Comment("This \nis \r\na multi
line " . PHP_EOL . "comment.");

输出

# This
# is
# a multi
# line
# comment.

带简单注释的指令

<?php echo Directive::create('deny', 'all')->setCommentText('Directive with a comment');

输出

deny all; # Directive with a comment

带多行注释的指令

<?php echo Directive::create('deny', 'all')->setCommentText('Directive
with a multi line comment');

输出

# Directive
# with a multi line comment
deny all;