owncdn/lib-nginx-config-processor

Nginx configuration files processor.

v0.3.0 2018-11-18 18:06 UTC

This package is auto-updated.

Last update: 2024-11-19 11:12:28 UTC


README

Latest Stable Version Total Downloads License pipeline status coverage report

https://packagist.org/packages/owncdn/lib-nginx-config-processor

(c) 2014-2016 Roman Piták roman@pitak.net

(c) 2016-2017 Peter Cui kuailedeyv@126.com

(c) 2018 Matthew Glinski matt@mglinski.com

PHP Nginx configuration files processor (parser, creator).

Installation

The best way to install is to use the Composer dependency manager.

php composer.phar require owncloud/lib-nginx-config-processor

Features

Pretty Print

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

Config Create

<?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');

File example.net:

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

Comments handling

Simple comments

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

output:

# This is a simple comment.

Multi-line comments

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

output:

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

Directive with a simple comment

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

output:

deny all; # Directive with a comment

Directive with a multi-line comment

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

output:

# Directive
# with a multi line comment
deny all;