Expand description
§nginx-discovery
Discover and introspect NGINX configurations with ease.
This crate provides three levels of API for working with NGINX configurations:
- High-level Discovery API: Simple methods for common use cases
- Mid-level Extractors: Type-safe directive extraction
- Low-level Parser: Direct AST access for custom processing
§Quick Start
use nginx_discovery::prelude::*;
// Parse configuration text
let config = r"
http {
access_log /var/log/nginx/access.log;
}
";
let discovery = NginxDiscovery::from_config_text(config)?;
// Get access logs
for log in discovery.access_logs() {
println!("Log: {}", log.path.display());
}
// Get all server names
for name in discovery.server_names() {
println!("Server: {}", name);
}§Feature Flags
system(default): System interaction (detect nginx, run nginx -T)serde: JSON/YAML serialization supportvisitor: Visitor pattern for AST traversalincludes: Include directive resolutioncli: Command-line interface (binary only)
§Examples
§Extract Log Files
use nginx_discovery::prelude::*;
let config = r"
access_log /var/log/nginx/access.log combined;
log_format combined '$remote_addr $request';
";
let discovery = NginxDiscovery::from_config_text(config)?;
let logs = discovery.access_logs();
for log in logs {
println!("Path: {}", log.path.display());
if let Some(format_name) = &log.format_name {
println!("Format: {}", format_name);
}
}§Parse from File
use nginx_discovery::prelude::*;
let discovery = NginxDiscovery::from_config_file("/etc/nginx/nginx.conf")?;
let logs = discovery.access_logs();
println!("Found {} access logs", logs.len());§Mid-level API
use nginx_discovery::{parse, extract};
let config_text = "access_log /var/log/nginx/access.log;";
let config = parse(config_text)?;
let logs = extract::access_logs(&config)?;
assert_eq!(logs.len(), 1);§Low-level Parser
use nginx_discovery::parse;
let config = parse("user nginx;")?;
assert_eq!(config.directives.len(), 1);
assert_eq!(config.directives[0].name(), "user");Re-exports§
Modules§
- ast
- Abstract Syntax Tree (AST) types for NGINX configurations
- error
- Enhanced error types with helpful diagnostics
- error_
builder - Error builder for constructing detailed error messages
- extract
- High-level extractors for NGINX directives
- parser
- NGINX configuration parser
- prelude
- Commonly used imports for quick setup
- system
system - System interaction utilities for NGINX discovery
- types
- High-level types for NGINX configuration elements
- visitor
visitor - Visitor pattern for traversing AST
Structs§
- Nginx
Discovery - High-level NGINX configuration discovery