mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-31 02:27:19 -04:00 
			
		
		
		
	This migrates a feature that was previously reserved for enterprise users, according to #2786. The Starlark integration needs to be updated since this was made before some significant changes in the v2 code base. When functional, it makes it possible to have very dynamic HTTP handlers. This will be a long-term ongoing project. Credit to Danny Navarro
		
			
				
	
	
		
			41 lines
		
	
	
		
			742 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			742 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # any module that provisions resources
 | |
| proxyConfig = {
 | |
| 	'load_balance_type': 'round_robin',
 | |
| 	'upstreams': [
 | |
| 		{
 | |
| 			'host': 'http://localhost:8080',
 | |
| 			'circuit_breaker': {
 | |
| 				'type': 'status_ratio',
 | |
| 				'threshold': 0.5
 | |
| 			}
 | |
| 		},
 | |
| 		{
 | |
| 			'host': 'http://localhost:8081'
 | |
| 		}
 | |
| 	]
 | |
| }
 | |
| 
 | |
| sfConfig = {
 | |
| 	'root': '/Users/dev/Desktop',
 | |
| 	'browse': {},
 | |
| }
 | |
| 
 | |
| proxy = loadResponder('reverse_proxy', proxyConfig)
 | |
| static_files = loadResponder('file_server', sfConfig)
 | |
| 
 | |
| def setup(r):
 | |
| 	# create some middlewares specific to this request
 | |
| 	mid = []
 | |
| 
 | |
| 	if r.query.get('log') == 'true':
 | |
| 		logMid = loadMiddleware('log', {'file': 'access.log'})
 | |
| 		mid.append(logMid)
 | |
| 
 | |
| 	execute(mid)
 | |
| 
 | |
| def serveHTTP(w, r):
 | |
| 	if r.url.find('static') > 0:
 | |
| 		return static_files
 | |
| 
 | |
| 	return proxy
 |