This tutorial helps to read configuration file using laravel 7 and PHP 7.You can read Nginx server configuration files by following this tutorial.I ll create Laravel Rest API that will read file and return nginx content.
Nginx is a popular Web server used by many PHP sites.This library provides to create and edit configuration files for Nginx servers.
The nginx configuration file has a .conf extension with the file name.I will use nginx-configurator
PHP Library for NGINX configuration parser/generator.
I am using nginx-configurator. This library can parse and generate NGINX configuration files. In the near future will provide CLI commands for NGINX configuration.
How To Install Nginx Configuration
composer require madkom/nginx-configurator
Created Nginx Configuration File
We will read below nginx configuration file, Let’s create nginx.conf
file and add below content as follows, We will store this file into laravel /resource/downloads/ folder
.
location /laravelenv { proxy_pass http://localhost:8000/api/v1/hello; }
Create API Entry into Laravel Routes
I will create routes entry into the routes/api.php
file –
Route::resource('read_conf_file', 'EmployeeController@readConfFile');
How To Import NameSpace into Laravel 7
We will import namespace into the controller file at the top position –
use Madkom\NginxConfigurator\Config\Location; use Madkom\NginxConfigurator\Node\Directive; use Madkom\NginxConfigurator\Node\Param;
We are using location and directive into the nginx.conf
file, So I have imported those classes, You can change as per your requirement.
Method To Read Nginx Configuration
We have created a file and made an entry into an api.php
file, Now we will create a method into the EmployeeController.php
file.
function getProxyDetails() { $parser = new Parser(); $res = []; $configuration = $parser->parseFile(resource_path() . '/downloads/nginx.conf'); $locations = $configuration->search(function (Location $location) { return $location instanceof Location; }); if (count($locations) > 0) { foreach ($locations as $loc) { $dircs = $loc->search(function (Directive $dirc) { return $dirc instanceof Directive; }); foreach ($dircs as $dirc) { $params = $dirc->getParams(); array_push($res, $params[0]->getValue()); } } } return $res; }
As you can see, I am parsing the file and searching the desired node and directive.We are loading existing Nginx configuration from file or a string, and retrieve and change its values.
Now, We are ready to run our example using below artisan command :
php artisan serve
Let’s open below URL on your browser:
http://localhost:8000/api/v1/read_conf_file