142 lines
3.1 KiB
JSON
142 lines
3.1 KiB
JSON
{
|
|
"listeners": {
|
|
"endpoints": [
|
|
{
|
|
"id": "public-app-http",
|
|
"name": "public-app HTTP",
|
|
"scope": "internal",
|
|
"enabled": true,
|
|
"binding": {
|
|
"address": "0.0.0.0:80",
|
|
"tls": false,
|
|
"http2": false
|
|
}
|
|
},
|
|
{
|
|
"id": "public-app-https",
|
|
"name": "public-app HTTPS",
|
|
"scope": "internal",
|
|
"enabled": true,
|
|
"binding": {
|
|
"address": "0.0.0.0:443",
|
|
"tls": true,
|
|
"http2": true
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"vhosts": [
|
|
{
|
|
"id": "public-app",
|
|
"enabled": true,
|
|
"frontend": {
|
|
"hosts": [
|
|
"app.example.test"
|
|
],
|
|
"listener_ids": [
|
|
"public-app-http",
|
|
"public-app-https"
|
|
]
|
|
},
|
|
"backends": [
|
|
{
|
|
"id": "app-a",
|
|
"url": "http://127.0.0.1:9001",
|
|
"weight": 3,
|
|
"enabled": true,
|
|
"allow_private": true,
|
|
"preserve_host": true,
|
|
"protocol": "http1",
|
|
"address_allowlist": [
|
|
"127.0.0.1/32"
|
|
]
|
|
},
|
|
{
|
|
"id": "app-b",
|
|
"url": "http://127.0.0.1:9002",
|
|
"weight": 1,
|
|
"enabled": true,
|
|
"allow_private": true,
|
|
"preserve_host": true,
|
|
"protocol": "http1",
|
|
"address_allowlist": [
|
|
"127.0.0.1/32"
|
|
]
|
|
}
|
|
],
|
|
"load_balancing": {
|
|
"algorithm": "adaptive",
|
|
"slow_start_seconds": 10,
|
|
"health_check": {
|
|
"mode": "http",
|
|
"path": "/health",
|
|
"interval_ms": 5000,
|
|
"timeout_ms": 2000,
|
|
"slow_response_ms": 1500,
|
|
"fall": 3,
|
|
"rise": 2,
|
|
"expected_status_min": 200,
|
|
"expected_status_max": 299
|
|
},
|
|
"keepalive": {
|
|
"enabled": true,
|
|
"idle_timeout_seconds": 30,
|
|
"max_idle_per_host": 4,
|
|
"tcp_keepalive_seconds": 30,
|
|
"pool_recycle_requests": 25000,
|
|
"pool_recycle_seconds": 3600,
|
|
"http1_max_buffer_bytes": 131072
|
|
},
|
|
"sticky": {
|
|
"mode": "cookie",
|
|
"ttl_seconds": 3600
|
|
}
|
|
},
|
|
"security_headers": {
|
|
"hsts": {
|
|
"enabled": true,
|
|
"max_age_seconds": 300,
|
|
"include_subdomains": false,
|
|
"preload": false
|
|
},
|
|
"nosniff": true,
|
|
"frame_options": "sameorigin",
|
|
"referrer_policy": "strict-origin-when-cross-origin"
|
|
},
|
|
"headers": {
|
|
"response": [
|
|
{
|
|
"op": "remove",
|
|
"name": "x-powered-by"
|
|
},
|
|
{
|
|
"op": "set",
|
|
"name": "x-served-by",
|
|
"value": "RustProxy"
|
|
}
|
|
]
|
|
},
|
|
"routes": [
|
|
{
|
|
"id": "root",
|
|
"path_prefix": "/",
|
|
"cache": false
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"tls": {
|
|
"default_certificate": "app",
|
|
"certificates": [
|
|
{
|
|
"id": "app",
|
|
"hosts": [
|
|
"app.example.test"
|
|
],
|
|
"cert_file": "app.pem",
|
|
"key_file": "app.key"
|
|
}
|
|
]
|
|
}
|
|
}
|