[ {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"debug"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"admin"}, {"type":"Text","value":" "}, {"type":"NameConstant","value":"off"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"on_demand_tls"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"ask"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"https://example.com"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"log"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"default"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"output"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"file"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/var/log/caddy/access.log"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"format"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"json"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"auto_https"}, {"type":"Text","value":" "}, {"type":"NameConstant","value":"disable_redirects"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"renew_interval"}, {"type":"Text","value":" "}, {"type":"LiteralNumberInteger","value":"20m"}, {"type":"CommentSingle","value":"\n\n\t# this is a comment\n"}, {"type":"Text","value":"\t"}, {"type":"Keyword","value":"servers"}, {"type":"Text","value":" "}, {"type":"Name","value":"192.168.1.2"}, {"type":"Punctuation","value":":"}, {"type":"LiteralNumberInteger","value":"8080"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"name"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"public"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"trusted_proxies"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"static"}, {"type":"Text","value":" "}, {"type":"NameConstant","value":"private_ranges"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"log_credentials"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n"}, {"type":"Punctuation","value":"}"}, {"type":"CommentSingle","value":"\n\n# top level comment\n"}, {"type":"Text","value":"\n"}, {"type":"NameVariableAnonymous","value":"(blocking)"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t"}, {"type":"NameDecorator","value":"@blocked"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"path"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*.txt"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*.md"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*.mdown"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/site/*"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"redir"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"@blocked"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/"}, {"type":"Text","value":"\n"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n"}, {"type":"GenericHeading","value":"http://example.com"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"respond"}, {"type":"Text","value":" "}, {"type":"LiteralStringDouble","value":"\"http\""}, {"type":"Text","value":"\n"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n"}, {"type":"GenericHeading","value":"example.com"}, {"type":"Text","value":", "}, {"type":"GenericHeading","value":"fake.org"}, {"type":"Text","value":", "}, {"type":"LiteralStringEscape","value":"{$ENV_SITE}"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"root"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"*"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/srv"}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"respond"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"/get-env"}, {"type":"Text","value":" "}, {"type":"LiteralStringEscape","value":"{$ENV_VAR}"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"respond"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"/get-env"}, {"type":"Text","value":" "}, {"type":"LiteralStringEscape","value":"{$ENV_VAR:default}"}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"tls"}, {"type":"Text","value":" "}, {"type":"NameConstant","value":"internal"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"tls"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/path/to/cert.pem"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/path/to/key.pem"}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"route"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"CommentSingle","value":"\n\t\t# Add trailing slash for directory requests\n"}, {"type":"Text","value":"\t\t"}, {"type":"NameDecorator","value":"@canonicalPath"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"file"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t\t"}, {"type":"Keyword","value":"try_files"}, {"type":"Text","value":" "}, {"type":"LiteralStringEscape","value":"{path}"}, {"type":"LiteralString","value":"/index.php"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"not"}, {"type":"Text","value":" "}, {"type":"Keyword","value":"path"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*/"}, {"type":"Text","value":"\n\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"redir"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"@canonicalPath"}, {"type":"Text","value":" "}, {"type":"LiteralStringEscape","value":"{path}"}, {"type":"LiteralString","value":"/"}, {"type":"Text","value":" "}, {"type":"LiteralNumberInteger","value":"308"}, {"type":"CommentSingle","value":"\n\n\t\t# If the requested file does not exist, try index files\n"}, {"type":"Text","value":"\t\t"}, {"type":"NameDecorator","value":"@indexFiles"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"file"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t\t"}, {"type":"Keyword","value":"try_files"}, {"type":"Text","value":" "}, {"type":"LiteralStringEscape","value":"{path}"}, {"type":"Text","value":" "}, {"type":"LiteralStringEscape","value":"{path}"}, {"type":"LiteralString","value":"/index.php"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"index.php"}, {"type":"Text","value":"\n\t\t\t\t"}, {"type":"Keyword","value":"split_path"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":".php"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"rewrite"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"@indexFiles"}, {"type":"Text","value":" "}, {"type":"LiteralStringEscape","value":"{http.matchers.file.relative}"}, {"type":"CommentSingle","value":"\n\n\t\t# Proxy PHP files to the FastCGI responder\n"}, {"type":"Text","value":"\t\t"}, {"type":"NameDecorator","value":"@phpFiles"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"path"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*.php"}, {"type":"Text","value":"\n\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"reverse_proxy"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"@phpFiles"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"unix//var/run/php7.4-fpm.sock"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"transport"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"fastcgi"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t\t"}, {"type":"Keyword","value":"split"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":".php"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n\t"}, {"type":"NameDecorator","value":"@encode_exts"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"path"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*.html"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*.js"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*.css"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"*.svg"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"header"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"X-Content-Type-Options"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"nosniff"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"X-XSS-Protection"}, {"type":"Text","value":" "}, {"type":"LiteralStringDouble","value":"\"1; mode=block\""}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"X-Robots-Tag"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"none"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"Content-Security-Policy"}, {"type":"Text","value":" "}, {"type":"LiteralStringDouble","value":"\"frame-ancestors 'self'\""}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"X-Frame-Options"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"DENY"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"Referrer-Policy"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"same-origin"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n\t"}, {"type":"NameDecorator","value":"@singleLine"}, {"type":"Text","value":" "}, {"type":"Keyword","value":"not"}, {"type":"Text","value":" "}, {"type":"Keyword","value":"path"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/matcher"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"respond"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"@singleLine"}, {"type":"Text","value":" "}, {"type":"LiteralStringDouble","value":"\"Awesome.\""}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"import"}, {"type":"Text","value":" blocking\n\t"}, {"type":"Keyword","value":"import"}, {"type":"Text","value":" blocking "}, {"type":"LiteralString","value":"foo"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"import"}, {"type":"Text","value":" glob/*\n\n\t"}, {"type":"Keyword","value":"file_server"}, {"type":"Text","value":"\n\n\t"}, {"type":"NameDecorator","value":"@named"}, {"type":"Text","value":" "}, {"type":"Keyword","value":"host"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"example.com"}, {"type":"Text","value":"\n\t"}, {"type":"Keyword","value":"handle"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"@named"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"handle"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"/foo*"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"handle"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"/foo*"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t\t"}, {"type":"Keyword","value":"respond"}, {"type":"Text","value":" "}, {"type":"LiteralStringDouble","value":"\""}, {"type":"LiteralStringEscape","value":"{path}"}, {"type":"LiteralStringDouble","value":" foo\""}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"respond"}, {"type":"Text","value":" "}, {"type":"LiteralStringDouble","value":"\"foo\""}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"handle_path"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"/foo*"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"respond"}, {"type":"Text","value":" "}, {"type":"LiteralStringDouble","value":"\"foo\""}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"reverse_proxy"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"/api/*"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"unix//var/run/api.sock"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"NameDecorator","value":"@good"}, {"type":"Text","value":" "}, {"type":"Keyword","value":"status"}, {"type":"Text","value":" "}, {"type":"LiteralNumberInteger","value":"200"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"handle_response"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"@good"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"rewrite"}, {"type":"Text","value":" "}, {"type":"NameDecorator","value":"*"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/foo"}, {"type":"LiteralStringEscape","value":"{uri}"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"file_server"}, {"type":"Text","value":"\n\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"respond"}, {"type":"Text","value":" "}, {"type":"LiteralStringHeredoc","value":"\u003c\u003cHTML"}, {"type":"LiteralString","value":"\n\t\t\u003c!DOCTYPE html\u003e\n\t\t\u003chtml\u003e\n\t\t\t\u003chead\u003e\n\t\t\t\t\u003ctitle\u003eTest\u003c/title\u003e\n\t\t\t\u003c/head\u003e\n\t\t\t\u003cbody\u003e\n\t\t\t\t\u003ch1\u003eHello, world!\u003c/h1\u003e\n\t\t\t\u003c/body\u003e\n\t\t\u003c/html\u003e\n\t\t"}, {"type":"LiteralStringHeredoc","value":"HTML"}, {"type":"Text","value":" "}, {"type":"LiteralNumberInteger","value":"200"}, {"type":"Text","value":"\n\n\t"}, {"type":"NameDecorator","value":"@file"}, {"type":"Text","value":" "}, {"type":"LiteralStringBacktick","value":"`file()`"}, {"type":"Text","value":"\n\t"}, {"type":"NameDecorator","value":"@first"}, {"type":"Text","value":" "}, {"type":"LiteralStringBacktick","value":"`file("}, {"type":"LiteralString","value":"{'try_files"}, {"type":"LiteralStringBacktick","value":"': ["}, {"type":"LiteralStringEscape","value":"{path}"}, {"type":"LiteralStringBacktick","value":", "}, {"type":"LiteralStringEscape","value":"{path}"}, {"type":"LiteralStringBacktick","value":" + '/', 'index.html']})`"}, {"type":"Text","value":"\n\t"}, {"type":"NameDecorator","value":"@smallest"}, {"type":"Text","value":" "}, {"type":"LiteralStringBacktick","value":"`file("}, {"type":"LiteralString","value":"{'try_policy"}, {"type":"LiteralStringBacktick","value":"': 'smallest_size', 'try_files': ['a.txt', 'b.txt']})`"}, {"type":"Text","value":"\n\n\t"}, {"type":"NameDecorator","value":"@without-both"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t"}, {"type":"Keyword","value":"not"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"{"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"path"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"/api/*"}, {"type":"Text","value":"\n\t\t\t"}, {"type":"Keyword","value":"method"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"POST"}, {"type":"Text","value":"\n\t\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\t"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n\n\t"}, {"type":"Keyword","value":"path_regexp"}, {"type":"Text","value":" "}, {"type":"Punctuation","value":"["}, {"type":"LiteralString","value":"\u003cname\u003e"}, {"type":"Punctuation","value":"]"}, {"type":"Text","value":" "}, {"type":"LiteralString","value":"\u003cregexp\u003e"}, {"type":"Text","value":"\n"}, {"type":"Punctuation","value":"}"}, {"type":"Text","value":"\n"} ]