mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			336 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			336 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
:80 {
 | 
						|
	@matcher {
 | 
						|
		method GET
 | 
						|
	}
 | 
						|
	respond @matcher "get"
 | 
						|
 | 
						|
	@matcher2 method POST
 | 
						|
	respond @matcher2 "post"
 | 
						|
 | 
						|
	@matcher3 not method PUT
 | 
						|
	respond @matcher3 "not put"
 | 
						|
 | 
						|
	@matcher4 vars "{http.request.uri}" "/vars-matcher"
 | 
						|
	respond @matcher4 "from vars matcher"
 | 
						|
 | 
						|
	@matcher5 vars_regexp static "{http.request.uri}" `\.([a-f0-9]{6})\.(css|js)$`
 | 
						|
	respond @matcher5 "from vars_regexp matcher with name"
 | 
						|
 | 
						|
	@matcher6 vars_regexp "{http.request.uri}" `\.([a-f0-9]{6})\.(css|js)$`
 | 
						|
	respond @matcher6 "from vars_regexp matcher without name"
 | 
						|
 | 
						|
	@matcher7 `path('/foo*') && method('GET')`
 | 
						|
	respond @matcher7 "inline expression matcher shortcut"
 | 
						|
 | 
						|
	@matcher8 {
 | 
						|
		header Foo bar
 | 
						|
		header Foo foobar
 | 
						|
		header Bar foo
 | 
						|
	}
 | 
						|
	respond @matcher8 "header matcher merging values of the same field"
 | 
						|
 | 
						|
	@matcher9 {
 | 
						|
		query foo=bar foo=baz bar=foo
 | 
						|
		query bar=baz
 | 
						|
	}
 | 
						|
	respond @matcher9 "query matcher merging pairs with the same keys"
 | 
						|
 | 
						|
	@matcher10 {
 | 
						|
		header !Foo
 | 
						|
		header Bar foo
 | 
						|
	}
 | 
						|
	respond @matcher10 "header matcher with null field matcher"
 | 
						|
 | 
						|
	@matcher11 remote_ip private_ranges
 | 
						|
	respond @matcher11 "remote_ip matcher with private ranges"
 | 
						|
 | 
						|
	@matcher12 client_ip private_ranges
 | 
						|
	respond @matcher12 "client_ip matcher with private ranges"
 | 
						|
 | 
						|
	@matcher13 {
 | 
						|
		remote_ip 1.1.1.1
 | 
						|
		remote_ip 2.2.2.2
 | 
						|
	}
 | 
						|
	respond @matcher13 "remote_ip merged"
 | 
						|
 | 
						|
	@matcher14 {
 | 
						|
		client_ip 1.1.1.1
 | 
						|
		client_ip 2.2.2.2
 | 
						|
	}
 | 
						|
	respond @matcher14 "client_ip merged"
 | 
						|
}
 | 
						|
----------
 | 
						|
{
 | 
						|
	"apps": {
 | 
						|
		"http": {
 | 
						|
			"servers": {
 | 
						|
				"srv0": {
 | 
						|
					"listen": [
 | 
						|
						":80"
 | 
						|
					],
 | 
						|
					"routes": [
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"method": [
 | 
						|
										"GET"
 | 
						|
									]
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "get",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"method": [
 | 
						|
										"POST"
 | 
						|
									]
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "post",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"not": [
 | 
						|
										{
 | 
						|
											"method": [
 | 
						|
												"PUT"
 | 
						|
											]
 | 
						|
										}
 | 
						|
									]
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "not put",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"vars": {
 | 
						|
										"{http.request.uri}": [
 | 
						|
											"/vars-matcher"
 | 
						|
										]
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "from vars matcher",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"vars_regexp": {
 | 
						|
										"{http.request.uri}": {
 | 
						|
											"name": "static",
 | 
						|
											"pattern": "\\.([a-f0-9]{6})\\.(css|js)$"
 | 
						|
										}
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "from vars_regexp matcher with name",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"vars_regexp": {
 | 
						|
										"{http.request.uri}": {
 | 
						|
											"name": "matcher6",
 | 
						|
											"pattern": "\\.([a-f0-9]{6})\\.(css|js)$"
 | 
						|
										}
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "from vars_regexp matcher without name",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"expression": {
 | 
						|
										"expr": "path('/foo*') \u0026\u0026 method('GET')",
 | 
						|
										"name": "matcher7"
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "inline expression matcher shortcut",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"header": {
 | 
						|
										"Bar": [
 | 
						|
											"foo"
 | 
						|
										],
 | 
						|
										"Foo": [
 | 
						|
											"bar",
 | 
						|
											"foobar"
 | 
						|
										]
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "header matcher merging values of the same field",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"query": {
 | 
						|
										"bar": [
 | 
						|
											"foo",
 | 
						|
											"baz"
 | 
						|
										],
 | 
						|
										"foo": [
 | 
						|
											"bar",
 | 
						|
											"baz"
 | 
						|
										]
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "query matcher merging pairs with the same keys",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"header": {
 | 
						|
										"Bar": [
 | 
						|
											"foo"
 | 
						|
										],
 | 
						|
										"Foo": null
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "header matcher with null field matcher",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"remote_ip": {
 | 
						|
										"ranges": [
 | 
						|
											"192.168.0.0/16",
 | 
						|
											"172.16.0.0/12",
 | 
						|
											"10.0.0.0/8",
 | 
						|
											"127.0.0.1/8",
 | 
						|
											"fd00::/8",
 | 
						|
											"::1"
 | 
						|
										]
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "remote_ip matcher with private ranges",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"client_ip": {
 | 
						|
										"ranges": [
 | 
						|
											"192.168.0.0/16",
 | 
						|
											"172.16.0.0/12",
 | 
						|
											"10.0.0.0/8",
 | 
						|
											"127.0.0.1/8",
 | 
						|
											"fd00::/8",
 | 
						|
											"::1"
 | 
						|
										]
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "client_ip matcher with private ranges",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"remote_ip": {
 | 
						|
										"ranges": [
 | 
						|
											"1.1.1.1",
 | 
						|
											"2.2.2.2"
 | 
						|
										]
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "remote_ip merged",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						},
 | 
						|
						{
 | 
						|
							"match": [
 | 
						|
								{
 | 
						|
									"client_ip": {
 | 
						|
										"ranges": [
 | 
						|
											"1.1.1.1",
 | 
						|
											"2.2.2.2"
 | 
						|
										]
 | 
						|
									}
 | 
						|
								}
 | 
						|
							],
 | 
						|
							"handle": [
 | 
						|
								{
 | 
						|
									"body": "client_ip merged",
 | 
						|
									"handler": "static_response"
 | 
						|
								}
 | 
						|
							]
 | 
						|
						}
 | 
						|
					]
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
} |