{
    debug
    http_port 80
    https_port 443
    order cache before rewrite
    cache {
        cache_name CaddyCache
    }
    log {
        level INFO
        output file /root/data/caddy/log/caddy.log {
            roll_size 10MB
            roll_keep 10
        }            
    }        
}

(log) {
    log {
        format transform `{request>headers>X-Forwarded-For>[0]:request>remote_ip} - {user_id} [{ts}] "{request>method} {request>uri} {request>proto}" {status} {size} "{request>headers>Referer>[0]}" "{request>headers>User-Agent>[0]}"` {
            time_format "02/Jan/2006:15:04:05 -0700"
        }
	    output file /root/data/caddy/log/{args.0}/access.log {
	        roll_size 25MB
	        roll_keep 10
	        roll_keep_for 24h
	    }
    }
}

(error_page) {
    handle_errors {
	    rewrite * /{err.status_code}.html
	    root * /root/data/caddy/pages/errors
        file_server
    }
}

(encode) {
    encode {
	    zstd best
		br 5 v2
		gzip 5
		minimum_length 1024
    }
}

(cache) {
    cache {
         allowed_http_verbs GET
         stale {args.0}
         ttl {args.1}
    }    
}

(header_realip) {
    header_up X-Real-IP {remote_host}	    
	header_up X-Real-IP {http.request.header.CF-Connecting-IP}
	header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
	header_up X-Forwarded-Proto {http.request.header.CF-Visitor}
}

(tls) {
    tls {
	    dns {args.0} {args.1} 
    }    
}

(buffer) {
    flush_interval 2000s
	buffer_responses
	max_buffer_size 256k
}

(rate_limit) {
    route /* {
        rate_limit {remote.ip} {args.0}r/m 10000 429
    }    
}

(route_nocache) {
    route {args.0} {
        rate_limit {remote.ip} {args.1}r/m 10000 429
        cache {
            stale 0s
            ttl 0s
        }
    }
}

:80 {
	root * /root/data/caddy/pages/demo
    file_server
    import cache 0s 200s
    import log 80
    import error_page  
    import encode
}

:9000 {
    reverse_proxy * 172.20.20.10:5001
    import cache 0s 200s
    import log dockge
    import error_page
    import encode
}

import /root/data/caddy/config/*