envoyr / nginx-configurator
1.0.0
2022-10-27 18:54 UTC
README
PHP NGINX 配置生成器库。
安装
使用Composer安装
composer require envoyr/nginx-configurator
要求
此库需要PHP版本为^8.1
。
用法
生成配置字符串
use Envoyr\NginxConfigurator\Factory; use Envoyr\NginxConfigurator\Builder; use Envoyr\NginxConfigurator\Config\Location; use Envoyr\NginxConfigurator\Node\Directive; use Envoyr\NginxConfigurator\Node\Literal; use Envoyr\NginxConfigurator\Node\Param; require __DIR__ . '/../vendor/autoload.php'; $factory = new Factory() $builder = new Builder(); $server = $builder->append($factory->createServer(80)); $server->append(new Directive('error_log', [ new Param('/var/log/nginx/error.log'), new Param('debug'), ])); $server->append(new Location(new Param('/test'), null, [ new Directive('error_page', [new Param('401'), new Param('@unauthorized')]), new Directive('set', [new Param('$auth_user'), new Literal('none')]), new Directive('auth_request', [new Param('/auth')]), new Directive('proxy_pass', [new Param('http://test-service')]), ])); $server->append(new Location(new Param('/auth'), null, [ new Directive('proxy_pass', [new Param('http://auth-service:9999')]), new Directive('proxy_bind', [new Param('$server_addr')]), new Directive('proxy_redirect', [new Param('http://$host'), new Param('https://$host')]), new Directive('proxy_set_header', [new Param('Content-Length'), new Literal("")]), new Directive('proxy_pass_request_body', [new Param('off')]), ])); $server->append(new Location(new Param('@unauthorized'), null, [ new Directive('return', [new Param('302'), new Param('/login?backurl=$request_uri')]), ])); $server->append(new Location(new Param('/login'), null, [ new Directive('expires', [new Param('-1')]), new Directive('proxy_pass', [new Param('http://identity-provider-service')]), new Directive('proxy_bind', [new Param('$server_addr')]), new Directive('proxy_redirect', [new Param('http://$host'), new Param('https://$host')]), new Directive('proxy_set_header', [new Param('Content-Length'), new Literal("")]), new Directive('proxy_pass_request_body', [new Param('off')]), ])); print($builder->dump());
生成的配置输出
server {
listen 80;
listen [::]:80 default ipv6only=on;
error_log /var/log/nginx/error.log debug;
location /test {
error_page 401 @unauthorized;
set $auth_user "none";
auth_request /auth;
proxy_pass http://test-service;
}
location /auth {
proxy_pass http://auth-service:9999;
proxy_bind $server_addr;
proxy_redirect http://$host https://$host;
proxy_set_header Content-Length "";
proxy_pass_request_body off;
}
location @unauthorized {
return 302 /login?backurl=$request_uri;
}
location /login {
expires -1;
proxy_pass http://identity-provider-service;
proxy_bind $server_addr;
proxy_redirect http://$host https://$host;
proxy_set_header Content-Length "";
proxy_pass_request_body off;
}
}
许可证
MIT许可证(MIT)
版权所有(c)2016 Madkom S.A. 版权所有(c)2022 envoyr hello@envoyr.com
特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的人免费权利,允许其在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向提供软件的人提供这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,无论该责任是否源于、因之或与软件或其使用或其他交易有关。