Gonginx is an Nginx configuration parser helps you to parse, edit, regenerate your nginx config files in your go applications. It makes managing your balancer configurations easier.
%token Keyword Variable BlockStart BlockEnd Semicolon Regex
%%
config : /* empty */
| config directives
;
block : BlockStart directives BlockEnd
;
directives : directives directive
;
directive : Keyword [parameters] (semicolon|block)
;
parameters : parameters keyword
;
keyword : Keyword
| Variable
| Regex
;
-
Parser is the main package that analyzes and turns nginx structred files into objects. It basically has 3 libraries,
lexer
explodes it intotoken
s andparser
turns tokens into config objects which are in their own package, - Config package is representation of any context, directive or their parameters in golang. So basically they are models and also AST
- Dumper is the package that holds styling configuration only.
- associate comments with config objects to print them on config generation and make it configurable with
dumper.Style
- move any context wrapper into their own file (remove from parser)
- Parse included files recusively, keep relative path on load, save all in a related structure and make that optional in dumper.Style
- Implement specific searches, like finding servers by server_name (domain) or any upstream by target etc.
- add more examples
- link the parent directive to any directive for easier manipulation
There is no known limitations yet. PRs are more than welcome if you want to implement a specific directive / block, please read Contributing before your first PR.