mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-25 15:52:45 -04: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"
 | |
| 								}
 | |
| 							]
 | |
| 						}
 | |
| 					]
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| } |