| 
									
										
										
										
											2021-08-26 16:31:55 -04:00
										 |  |  | example.com { | 
					
						
							|  |  |  | 	root * /srv | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	# Trigger errors for certain paths | 
					
						
							|  |  |  | 	error /private* "Unauthorized" 403 | 
					
						
							|  |  |  | 	error /hidden* "Not found" 404 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	# Handle the error by serving an HTML page  | 
					
						
							|  |  |  | 	handle_errors { | 
					
						
							|  |  |  | 		rewrite * /{http.error.status_code}.html | 
					
						
							|  |  |  | 		file_server | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	file_server | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ---------- | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	"apps": { | 
					
						
							|  |  |  | 		"http": { | 
					
						
							|  |  |  | 			"servers": { | 
					
						
							|  |  |  | 				"srv0": { | 
					
						
							|  |  |  | 					"listen": [ | 
					
						
							|  |  |  | 						":443" | 
					
						
							|  |  |  | 					], | 
					
						
							|  |  |  | 					"routes": [ | 
					
						
							|  |  |  | 						{ | 
					
						
							|  |  |  | 							"match": [ | 
					
						
							|  |  |  | 								{ | 
					
						
							|  |  |  | 									"host": [ | 
					
						
							|  |  |  | 										"example.com" | 
					
						
							|  |  |  | 									] | 
					
						
							|  |  |  | 								} | 
					
						
							|  |  |  | 							], | 
					
						
							|  |  |  | 							"handle": [ | 
					
						
							|  |  |  | 								{ | 
					
						
							|  |  |  | 									"handler": "subroute", | 
					
						
							|  |  |  | 									"routes": [ | 
					
						
							|  |  |  | 										{ | 
					
						
							|  |  |  | 											"handle": [ | 
					
						
							|  |  |  | 												{ | 
					
						
							|  |  |  | 													"handler": "vars", | 
					
						
							|  |  |  | 													"root": "/srv" | 
					
						
							|  |  |  | 												} | 
					
						
							|  |  |  | 											] | 
					
						
							|  |  |  | 										}, | 
					
						
							|  |  |  | 										{ | 
					
						
							|  |  |  | 											"handle": [ | 
					
						
							|  |  |  | 												{ | 
					
						
							|  |  |  | 													"error": "Unauthorized", | 
					
						
							|  |  |  | 													"handler": "error", | 
					
						
							|  |  |  | 													"status_code": 403 | 
					
						
							|  |  |  | 												} | 
					
						
							|  |  |  | 											], | 
					
						
							|  |  |  | 											"match": [ | 
					
						
							|  |  |  | 												{ | 
					
						
							|  |  |  | 													"path": [ | 
					
						
							|  |  |  | 														"/private*" | 
					
						
							|  |  |  | 													] | 
					
						
							|  |  |  | 												} | 
					
						
							|  |  |  | 											] | 
					
						
							|  |  |  | 										}, | 
					
						
							|  |  |  | 										{ | 
					
						
							|  |  |  | 											"handle": [ | 
					
						
							|  |  |  | 												{ | 
					
						
							|  |  |  | 													"error": "Not found", | 
					
						
							|  |  |  | 													"handler": "error", | 
					
						
							|  |  |  | 													"status_code": 404 | 
					
						
							|  |  |  | 												} | 
					
						
							|  |  |  | 											], | 
					
						
							|  |  |  | 											"match": [ | 
					
						
							|  |  |  | 												{ | 
					
						
							|  |  |  | 													"path": [ | 
					
						
							|  |  |  | 														"/hidden*" | 
					
						
							|  |  |  | 													] | 
					
						
							|  |  |  | 												} | 
					
						
							|  |  |  | 											] | 
					
						
							|  |  |  | 										}, | 
					
						
							|  |  |  | 										{ | 
					
						
							|  |  |  | 											"handle": [ | 
					
						
							|  |  |  | 												{ | 
					
						
							|  |  |  | 													"handler": "file_server", | 
					
						
							|  |  |  | 													"hide": [ | 
					
						
							|  |  |  | 														"./Caddyfile" | 
					
						
							|  |  |  | 													] | 
					
						
							|  |  |  | 												} | 
					
						
							|  |  |  | 											] | 
					
						
							|  |  |  | 										} | 
					
						
							|  |  |  | 									] | 
					
						
							|  |  |  | 								} | 
					
						
							|  |  |  | 							], | 
					
						
							|  |  |  | 							"terminal": true | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					], | 
					
						
							|  |  |  | 					"errors": { | 
					
						
							|  |  |  | 						"routes": [ | 
					
						
							|  |  |  | 							{ | 
					
						
							|  |  |  | 								"match": [ | 
					
						
							|  |  |  | 									{ | 
					
						
							|  |  |  | 										"host": [ | 
					
						
							|  |  |  | 											"example.com" | 
					
						
							|  |  |  | 										] | 
					
						
							|  |  |  | 									} | 
					
						
							|  |  |  | 								], | 
					
						
							|  |  |  | 								"handle": [ | 
					
						
							|  |  |  | 									{ | 
					
						
							|  |  |  | 										"handler": "subroute", | 
					
						
							|  |  |  | 										"routes": [ | 
					
						
							|  |  |  | 											{ | 
					
						
							|  |  |  | 												"handle": [ | 
					
						
							|  |  |  | 													{ | 
					
						
							| 
									
										
										
										
											2025-06-06 18:46:39 +01:00
										 |  |  | 														"handler": "subroute", | 
					
						
							|  |  |  | 														"routes": [ | 
					
						
							|  |  |  | 															{ | 
					
						
							|  |  |  | 																"group": "group0", | 
					
						
							|  |  |  | 																"handle": [ | 
					
						
							|  |  |  | 																	{ | 
					
						
							|  |  |  | 																		"handler": "rewrite", | 
					
						
							|  |  |  | 																		"uri": "/{http.error.status_code}.html" | 
					
						
							|  |  |  | 																	} | 
					
						
							|  |  |  | 																] | 
					
						
							|  |  |  | 															}, | 
					
						
							|  |  |  | 															{ | 
					
						
							|  |  |  | 																"handle": [ | 
					
						
							|  |  |  | 																	{ | 
					
						
							|  |  |  | 																		"handler": "file_server", | 
					
						
							|  |  |  | 																		"hide": [ | 
					
						
							|  |  |  | 																			"./Caddyfile" | 
					
						
							|  |  |  | 																		] | 
					
						
							|  |  |  | 																	} | 
					
						
							|  |  |  | 																] | 
					
						
							|  |  |  | 															} | 
					
						
							| 
									
										
										
										
											2021-08-26 16:31:55 -04:00
										 |  |  | 														] | 
					
						
							|  |  |  | 													} | 
					
						
							|  |  |  | 												] | 
					
						
							|  |  |  | 											} | 
					
						
							|  |  |  | 										] | 
					
						
							|  |  |  | 									} | 
					
						
							|  |  |  | 								], | 
					
						
							|  |  |  | 								"terminal": true | 
					
						
							|  |  |  | 							} | 
					
						
							|  |  |  | 						] | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |