This document describes all configuration options available in Buzzard.
Please see development example.
Buzzard uses ASP.NET Core's configuration system with the following precedence:
appsettings.json(base configuration)appsettings.{Environment}.json(environment-specific, overwrites base)- Environment variables
- Command line arguments
Configure YARP reverse proxy in appsettings.json:
"ReverseProxy": {
"Routes": {
"route1": {
"ClusterId": "cluster1",
"Match": { "Path": "{**catch-all}" }
}
},
"Clusters": {
"cluster1": {
"Destinations": {
"destination1": {
"Address": "https://example.com/"
}
}
}
}
}Configure firewall rules to allow/deny requests:
"Firewall": {
"Path": {
"Allow": {
"Contains": ["/health", "/status"],
"StartsWith": ["/api/public"],
"EndsWith": [".css", ".js", ".png", ".ico"]
},
"Deny": {
"Contains": ["/admin", "/config", "/.env"],
"StartsWith": ["/private/", "/internal/"],
"EndsWith": [".bak", ".tmp", ".log"]
}
},
"UserAgent": {
"Deny": {
"Contains": [
"bad"
],
"StartsWith": [
"evil/"
],
"EndsWith": [
"bot"
]
}
}
}Buzzard supports OpenTelemetry for observability (tracing, metrics, and logs). Configure it in appsettings.json:
"OpenTelemetry": {
"ServiceName": "Buzzard",
"ServiceNameSpace": "Buzzard",
"ServiceVersion": "1.0.0",
"Environment": "development",
"OtlpEndpoint": "http://localhost:4317",
"Headers": "Authorization=Basic {base64-encoded-credentials}" // If you need
}Configuration options:
ServiceName: Name of your service (default: "buzzard")ServiceNameSpace: Service namespace for grouping (default: "")ServiceVersion: Version of your service (default: "1.0.0")Environment: Environment identifier (default: "development")OtlpEndpoint: OTLP collector endpoint URL (required - if not set, OpenTelemetry is disabled)Headers: Additional headers for authentication (default: "")
Note: If OtlpEndpoint is not configured, OpenTelemetry setup will be skipped and a message will be logged.
ASP.NET Core automatically loads environment-specific configuration files:
appsettings.json(base configuration)appsettings.{Environment}.json(environment-specific, overwrites base)- Environment variables
- Command line arguments
dotnet run
# Loads: appsettings.json + appsettings.Development.jsonASPNETCORE_ENVIRONMENT=Production dotnet run
# Loads: appsettings.json + appsettings.Production.jsonPort configuration is handled by Properties/launchSettings.json (Visual Studio/dotnet run only).
launchSettings.json is not used in production. Configure ports using:
export ASPNETCORE_URLS="https://+:443;http://+:80"
dotnet Buzzard.dlldotnet Buzzard.dll --urls "https://+:443;http://+:80"{
"Kestrel": {
"Endpoints": {
"Http": { "Url": "http://+:80" },
"Https": { "Url": "https://+:443" }
}
}
}- Configuration changes in
appsettings.jsonrequire server restart - No rebuild needed for configuration changes
- Configuration files are not hot-reloaded in ASP.NET Core by default