{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://raw.githubusercontent.com/api-evangelist/tinyproxy/main/json-schema/tinyproxy-config-schema.json", "title": "Tinyproxy Configuration", "description": "Schema for Tinyproxy HTTP proxy daemon configuration parameters", "type": "object", "properties": { "port": { "type": "integer", "minimum": 1, "maximum": 65535, "description": "TCP port Tinyproxy listens on (default: 8888)" }, "user": { "type": "string", "description": "System user to run the proxy daemon as" }, "group": { "type": "string", "description": "System group for the proxy daemon process" }, "logFile": { "type": "string", "description": "Path to the log file" }, "logLevel": { "type": "string", "enum": ["Critical", "Error", "Warning", "Notice", "Connect", "Info"], "description": "Logging verbosity level" }, "pidFile": { "type": "string", "description": "Path to the PID file" }, "maxClients": { "type": "integer", "minimum": 1, "description": "Maximum number of simultaneous connections" }, "minSpareServers": { "type": "integer", "description": "Minimum number of spare server processes" }, "maxSpareServers": { "type": "integer", "description": "Maximum number of spare server processes" }, "startServers": { "type": "integer", "description": "Initial number of server processes to start" }, "maxRequestsPerChild": { "type": "integer", "description": "Number of connections per child process before recycling" }, "allow": { "type": "array", "items": { "type": "string" }, "description": "Allowed client IP addresses or CIDR ranges" }, "deny": { "type": "array", "items": { "type": "string" }, "description": "Denied client IP addresses or CIDR ranges" }, "disableViaHeader": { "type": "boolean", "description": "Whether to disable the Via header" }, "xTinyproxyHeader": { "type": "boolean", "description": "Whether to send X-Tinyproxy header with client IP" }, "upstream": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["http", "socks4", "socks5"] }, "host": { "type": "string" }, "port": { "type": "integer" }, "domain": { "type": "string" } } }, "description": "Upstream proxy configuration for chaining" }, "noUpstream": { "type": "array", "items": { "type": "string" }, "description": "Domains to bypass upstream proxy" }, "filter": { "type": "string", "description": "Path to filter file for URL/domain filtering" }, "filterURLs": { "type": "boolean", "description": "Whether to filter by full URLs rather than just domains" }, "filterCaseSensitive": { "type": "boolean", "description": "Whether filters are case-sensitive" }, "filterDefaultDeny": { "type": "boolean", "description": "Default deny policy when filter file is active" }, "connectPort": { "type": "array", "items": { "type": "integer" }, "description": "Allowed ports for CONNECT tunneling (e.g., 443, 563)" }, "reverseOnly": { "type": "boolean", "description": "Whether to operate in reverse proxy mode only" }, "reverseMagic": { "type": "boolean", "description": "Whether to add cookie magic for reverse proxying" }, "reverseBaseURL": { "type": "string", "description": "Base URL for reverse proxy mode" }, "statHost": { "type": "string", "description": "Hostname that returns statistics page" }, "statFile": { "type": "string", "description": "Path to statistics page template file" }, "timeout": { "type": "integer", "description": "Connection timeout in seconds" }, "bindSameAddress": { "type": "boolean", "description": "Whether to bind outbound connections to same address" } } }