146 lines
3.2 KiB
JSON
146 lines
3.2 KiB
JSON
{
|
|
"routes": [
|
|
{
|
|
"id": "https-passthrough",
|
|
"name": "HTTPS Passthrough to Backend",
|
|
"match": {
|
|
"ports": 443,
|
|
"domains": "backend.example.com"
|
|
},
|
|
"action": {
|
|
"type": "forward",
|
|
"targets": [
|
|
{
|
|
"host": "10.0.0.1",
|
|
"port": 443
|
|
}
|
|
],
|
|
"tls": {
|
|
"mode": "passthrough"
|
|
}
|
|
},
|
|
"priority": 10,
|
|
"enabled": true
|
|
},
|
|
{
|
|
"id": "https-terminate",
|
|
"name": "HTTPS Terminate for API",
|
|
"match": {
|
|
"ports": 443,
|
|
"domains": "api.example.com"
|
|
},
|
|
"action": {
|
|
"type": "forward",
|
|
"targets": [
|
|
{
|
|
"host": "localhost",
|
|
"port": 8080
|
|
}
|
|
],
|
|
"tls": {
|
|
"mode": "terminate",
|
|
"certificate": "auto"
|
|
}
|
|
},
|
|
"priority": 20,
|
|
"enabled": true
|
|
},
|
|
{
|
|
"id": "http-redirect",
|
|
"name": "HTTP to HTTPS Redirect",
|
|
"match": {
|
|
"ports": 80,
|
|
"domains": ["api.example.com", "www.example.com"]
|
|
},
|
|
"action": {
|
|
"type": "forward",
|
|
"targets": [
|
|
{
|
|
"host": "localhost",
|
|
"port": 8080
|
|
}
|
|
]
|
|
},
|
|
"priority": 0
|
|
},
|
|
{
|
|
"id": "load-balanced",
|
|
"name": "Load Balanced Backend",
|
|
"match": {
|
|
"ports": 443,
|
|
"domains": "*.example.com"
|
|
},
|
|
"action": {
|
|
"type": "forward",
|
|
"targets": [
|
|
{
|
|
"host": "backend1.internal",
|
|
"port": 8080
|
|
},
|
|
{
|
|
"host": "backend2.internal",
|
|
"port": 8080
|
|
},
|
|
{
|
|
"host": "backend3.internal",
|
|
"port": 8080
|
|
}
|
|
],
|
|
"tls": {
|
|
"mode": "terminate",
|
|
"certificate": "auto"
|
|
},
|
|
"loadBalancing": {
|
|
"algorithm": "round-robin",
|
|
"healthCheck": {
|
|
"path": "/health",
|
|
"interval": 30,
|
|
"timeout": 5,
|
|
"unhealthyThreshold": 3,
|
|
"healthyThreshold": 2
|
|
}
|
|
}
|
|
},
|
|
"security": {
|
|
"ipAllowList": ["10.0.0.0/8", "192.168.0.0/16"],
|
|
"maxConnections": 1000,
|
|
"rateLimit": {
|
|
"enabled": true,
|
|
"maxRequests": 100,
|
|
"window": 60,
|
|
"keyBy": "ip"
|
|
}
|
|
},
|
|
"headers": {
|
|
"request": {
|
|
"X-Forwarded-For": "{clientIp}",
|
|
"X-Real-IP": "{clientIp}"
|
|
},
|
|
"response": {
|
|
"X-Powered-By": "RustProxy"
|
|
},
|
|
"cors": {
|
|
"enabled": true,
|
|
"allowOrigin": "*",
|
|
"allowMethods": "GET,POST,PUT,DELETE,OPTIONS",
|
|
"allowHeaders": "Content-Type,Authorization",
|
|
"allowCredentials": false,
|
|
"maxAge": 86400
|
|
}
|
|
},
|
|
"priority": 5
|
|
}
|
|
],
|
|
"acme": {
|
|
"email": "admin@example.com",
|
|
"useProduction": false,
|
|
"port": 80
|
|
},
|
|
"connectionTimeout": 30000,
|
|
"socketTimeout": 3600000,
|
|
"maxConnectionsPerIp": 100,
|
|
"connectionRateLimitPerMinute": 300,
|
|
"keepAliveTreatment": "extended",
|
|
"enableDetailedLogging": false
|
|
}
|