[{"data":1,"prerenderedAt":4654},["ShallowReactive",2],{"navigation_docs":3,"-quayel-gateway-plugins-load-balancer":91,"-quayel-gateway-plugins-load-balancer-surround":4649},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":90},"Quayel Gateway","i-lucide-network","\u002Fquayel-gateway","quayel-gateway",[10,29,68],{"title":11,"icon":12,"path":13,"stem":14,"children":15},"Getting Started","i-lucide-rocket","\u002Fquayel-gateway\u002Fgetting-started","quayel-gateway\u002F01.getting-started\u002Findex",[16,19,24],{"title":17,"path":13,"stem":14,"icon":18},"Introduction","i-lucide-book-open",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fquayel-gateway\u002Fgetting-started\u002Finstallation","quayel-gateway\u002F01.getting-started\u002F1.installation","i-lucide-container",{"title":25,"path":26,"stem":27,"icon":28},"Project Structure","\u002Fquayel-gateway\u002Fgetting-started\u002Fproject-structure","quayel-gateway\u002F01.getting-started\u002F2.project-structure","i-lucide-folder-tree",{"title":30,"icon":31,"path":32,"stem":33,"children":34},"Plugins","i-lucide-puzzle","\u002Fquayel-gateway\u002Fplugins","quayel-gateway\u002F02.plugins\u002Findex",[35,38,43,48,53,58,63],{"title":36,"path":32,"stem":33,"icon":37},"Overview","i-lucide-workflow",{"title":39,"path":40,"stem":41,"icon":42},"IP Intelligence","\u002Fquayel-gateway\u002Fplugins\u002Fip-intel","quayel-gateway\u002F02.plugins\u002F1.ip-intel","i-lucide-radar",{"title":44,"path":45,"stem":46,"icon":47},"Firewall","\u002Fquayel-gateway\u002Fplugins\u002Ffirewall","quayel-gateway\u002F02.plugins\u002F2.firewall","i-lucide-shield",{"title":49,"path":50,"stem":51,"icon":52},"Rate Limiting","\u002Fquayel-gateway\u002Fplugins\u002Frate-limiting","quayel-gateway\u002F02.plugins\u002F3.rate-limiting","i-lucide-gauge",{"title":54,"path":55,"stem":56,"icon":57},"Cache","\u002Fquayel-gateway\u002Fplugins\u002Fcache","quayel-gateway\u002F02.plugins\u002F4.cache","i-lucide-database",{"title":59,"path":60,"stem":61,"icon":62},"Load Balancer","\u002Fquayel-gateway\u002Fplugins\u002Fload-balancer","quayel-gateway\u002F02.plugins\u002F5.load-balancer","i-lucide-scale",{"title":64,"path":65,"stem":66,"icon":67},"Auto-SSL","\u002Fquayel-gateway\u002Fplugins\u002Fauto-ssl","quayel-gateway\u002F02.plugins\u002F6.auto-ssl","i-lucide-lock",{"title":69,"icon":70,"path":71,"stem":72,"children":73},"AI","i-lucide-bot","\u002Fquayel-gateway\u002Fai","quayel-gateway\u002F03.ai\u002Findex",[74,75,80,85],{"title":36,"path":71,"stem":72,"icon":70},{"title":76,"path":77,"stem":78,"icon":79},"The Quayel Gateway Skill","\u002Fquayel-gateway\u002Fai\u002Fskill","quayel-gateway\u002F03.ai\u002F1.skill","i-lucide-wand-sparkles",{"title":81,"path":82,"stem":83,"icon":84},"Installing the Skill","\u002Fquayel-gateway\u002Fai\u002Finstallation","quayel-gateway\u002F03.ai\u002F2.installation","i-lucide-download",{"title":86,"path":87,"stem":88,"icon":89},"AI Agent Guide","\u002Fquayel-gateway\u002Fai\u002Fagent-guide","quayel-gateway\u002F03.ai\u002F3.agent-guide","i-lucide-braces",false,{"id":92,"title":59,"body":93,"description":4642,"extension":4643,"links":4644,"meta":4645,"navigation":4646,"path":60,"seo":4647,"stem":61,"__hash__":4648},"docs\u002Fquayel-gateway\u002F02.plugins\u002F5.load-balancer.md",{"type":94,"value":95,"toc":4610},"minimark",[96,101,105,110,733,737,877,881,886,889,934,938,941,987,991,994,1040,1044,1047,1093,1097,1100,1166,1177,1229,1232,1372,1376,1532,1538,1552,1556,1562,1606,1671,1675,1679,1682,1727,1731,1741,1889,1923,2036,2040,2043,2117,2121,2129,2133,2137,2496,2500,2954,2958,3664,3668,4044,4048,4372,4376,4379,4423,4427,4529,4533,4578,4582,4606],[97,98,100],"h1",{"id":99},"load-balancer-plugin","Load Balancer Plugin",[102,103,104],"p",{},"The load balancer plugin routes requests to upstream backend servers using configurable algorithms. It supports multiple load balancer pools, weighted targets, health checks, and sticky sessions.",[106,107,109],"h2",{"id":108},"configuration","Configuration",[111,112,117],"pre",{"className":113,"code":114,"language":115,"meta":116,"style":116},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"plugins\": {\n    \"load_balancer\": {\n      \"enabled\": true,\n      \"load_balancers\": [\n        {\n          \"id\": \"default\",\n          \"name\": \"My Backend\",\n          \"enabled\": true,\n          \"conditions\": [],\n          \"algorithm\": {\n            \"type\": \"round_robin\"\n          },\n          \"targets\": [\n            {\n              \"id\": \"backend-1\",\n              \"host\": \"10.0.0.1\",\n              \"port\": 8080,\n              \"protocol\": \"http\",\n              \"weight\": 100,\n              \"enabled\": true,\n              \"tls\": {\n                \"verify\": false,\n                \"sni\": null\n              }\n            },\n            {\n              \"id\": \"backend-2\",\n              \"host\": \"10.0.0.2\",\n              \"port\": 8080,\n              \"protocol\": \"http\",\n              \"weight\": 100,\n              \"enabled\": true\n            }\n          ],\n          \"host_header\": {\n            \"mode\": \"visitor\"\n          },\n          \"health_check\": {\n            \"mode\": \"off\"\n          }\n        }\n      ]\n    }\n  }\n}\n","json","",[118,119,120,129,148,164,181,196,202,228,249,262,277,291,313,319,333,339,360,381,398,419,436,449,463,480,495,501,507,512,532,552,567,586,601,615,621,627,641,660,665,679,697,703,709,715,721,727],"code",{"__ignoreMap":116},[121,122,125],"span",{"class":123,"line":124},"line",1,[121,126,128],{"class":127},"sMK4o","{\n",[121,130,132,135,139,142,145],{"class":123,"line":131},2,[121,133,134],{"class":127},"  \"",[121,136,138],{"class":137},"spNyl","plugins",[121,140,141],{"class":127},"\"",[121,143,144],{"class":127},":",[121,146,147],{"class":127}," {\n",[121,149,151,154,158,160,162],{"class":123,"line":150},3,[121,152,153],{"class":127},"    \"",[121,155,157],{"class":156},"sBMFI","load_balancer",[121,159,141],{"class":127},[121,161,144],{"class":127},[121,163,147],{"class":127},[121,165,167,170,174,176,178],{"class":123,"line":166},4,[121,168,169],{"class":127},"      \"",[121,171,173],{"class":172},"sbssI","enabled",[121,175,141],{"class":127},[121,177,144],{"class":127},[121,179,180],{"class":127}," true,\n",[121,182,184,186,189,191,193],{"class":123,"line":183},5,[121,185,169],{"class":127},[121,187,188],{"class":172},"load_balancers",[121,190,141],{"class":127},[121,192,144],{"class":127},[121,194,195],{"class":127}," [\n",[121,197,199],{"class":123,"line":198},6,[121,200,201],{"class":127},"        {\n",[121,203,205,208,212,214,216,219,223,225],{"class":123,"line":204},7,[121,206,207],{"class":127},"          \"",[121,209,211],{"class":210},"swJcz","id",[121,213,141],{"class":127},[121,215,144],{"class":127},[121,217,218],{"class":127}," \"",[121,220,222],{"class":221},"sfazB","default",[121,224,141],{"class":127},[121,226,227],{"class":127},",\n",[121,229,231,233,236,238,240,242,245,247],{"class":123,"line":230},8,[121,232,207],{"class":127},[121,234,235],{"class":210},"name",[121,237,141],{"class":127},[121,239,144],{"class":127},[121,241,218],{"class":127},[121,243,244],{"class":221},"My Backend",[121,246,141],{"class":127},[121,248,227],{"class":127},[121,250,252,254,256,258,260],{"class":123,"line":251},9,[121,253,207],{"class":127},[121,255,173],{"class":210},[121,257,141],{"class":127},[121,259,144],{"class":127},[121,261,180],{"class":127},[121,263,265,267,270,272,274],{"class":123,"line":264},10,[121,266,207],{"class":127},[121,268,269],{"class":210},"conditions",[121,271,141],{"class":127},[121,273,144],{"class":127},[121,275,276],{"class":127}," [],\n",[121,278,280,282,285,287,289],{"class":123,"line":279},11,[121,281,207],{"class":127},[121,283,284],{"class":210},"algorithm",[121,286,141],{"class":127},[121,288,144],{"class":127},[121,290,147],{"class":127},[121,292,294,297,301,303,305,307,310],{"class":123,"line":293},12,[121,295,296],{"class":127},"            \"",[121,298,300],{"class":299},"su27w","type",[121,302,141],{"class":127},[121,304,144],{"class":127},[121,306,218],{"class":127},[121,308,309],{"class":221},"round_robin",[121,311,312],{"class":127},"\"\n",[121,314,316],{"class":123,"line":315},13,[121,317,318],{"class":127},"          },\n",[121,320,322,324,327,329,331],{"class":123,"line":321},14,[121,323,207],{"class":127},[121,325,326],{"class":210},"targets",[121,328,141],{"class":127},[121,330,144],{"class":127},[121,332,195],{"class":127},[121,334,336],{"class":123,"line":335},15,[121,337,338],{"class":127},"            {\n",[121,340,342,345,347,349,351,353,356,358],{"class":123,"line":341},16,[121,343,344],{"class":127},"              \"",[121,346,211],{"class":299},[121,348,141],{"class":127},[121,350,144],{"class":127},[121,352,218],{"class":127},[121,354,355],{"class":221},"backend-1",[121,357,141],{"class":127},[121,359,227],{"class":127},[121,361,363,365,368,370,372,374,377,379],{"class":123,"line":362},17,[121,364,344],{"class":127},[121,366,367],{"class":299},"host",[121,369,141],{"class":127},[121,371,144],{"class":127},[121,373,218],{"class":127},[121,375,376],{"class":221},"10.0.0.1",[121,378,141],{"class":127},[121,380,227],{"class":127},[121,382,384,386,389,391,393,396],{"class":123,"line":383},18,[121,385,344],{"class":127},[121,387,388],{"class":299},"port",[121,390,141],{"class":127},[121,392,144],{"class":127},[121,394,395],{"class":172}," 8080",[121,397,227],{"class":127},[121,399,401,403,406,408,410,412,415,417],{"class":123,"line":400},19,[121,402,344],{"class":127},[121,404,405],{"class":299},"protocol",[121,407,141],{"class":127},[121,409,144],{"class":127},[121,411,218],{"class":127},[121,413,414],{"class":221},"http",[121,416,141],{"class":127},[121,418,227],{"class":127},[121,420,422,424,427,429,431,434],{"class":123,"line":421},20,[121,423,344],{"class":127},[121,425,426],{"class":299},"weight",[121,428,141],{"class":127},[121,430,144],{"class":127},[121,432,433],{"class":172}," 100",[121,435,227],{"class":127},[121,437,439,441,443,445,447],{"class":123,"line":438},21,[121,440,344],{"class":127},[121,442,173],{"class":299},[121,444,141],{"class":127},[121,446,144],{"class":127},[121,448,180],{"class":127},[121,450,452,454,457,459,461],{"class":123,"line":451},22,[121,453,344],{"class":127},[121,455,456],{"class":299},"tls",[121,458,141],{"class":127},[121,460,144],{"class":127},[121,462,147],{"class":127},[121,464,466,469,473,475,477],{"class":123,"line":465},23,[121,467,468],{"class":127},"                \"",[121,470,472],{"class":471},"s2Zo4","verify",[121,474,141],{"class":127},[121,476,144],{"class":127},[121,478,479],{"class":127}," false,\n",[121,481,483,485,488,490,492],{"class":123,"line":482},24,[121,484,468],{"class":127},[121,486,487],{"class":471},"sni",[121,489,141],{"class":127},[121,491,144],{"class":127},[121,493,494],{"class":127}," null\n",[121,496,498],{"class":123,"line":497},25,[121,499,500],{"class":127},"              }\n",[121,502,504],{"class":123,"line":503},26,[121,505,506],{"class":127},"            },\n",[121,508,510],{"class":123,"line":509},27,[121,511,338],{"class":127},[121,513,515,517,519,521,523,525,528,530],{"class":123,"line":514},28,[121,516,344],{"class":127},[121,518,211],{"class":299},[121,520,141],{"class":127},[121,522,144],{"class":127},[121,524,218],{"class":127},[121,526,527],{"class":221},"backend-2",[121,529,141],{"class":127},[121,531,227],{"class":127},[121,533,535,537,539,541,543,545,548,550],{"class":123,"line":534},29,[121,536,344],{"class":127},[121,538,367],{"class":299},[121,540,141],{"class":127},[121,542,144],{"class":127},[121,544,218],{"class":127},[121,546,547],{"class":221},"10.0.0.2",[121,549,141],{"class":127},[121,551,227],{"class":127},[121,553,555,557,559,561,563,565],{"class":123,"line":554},30,[121,556,344],{"class":127},[121,558,388],{"class":299},[121,560,141],{"class":127},[121,562,144],{"class":127},[121,564,395],{"class":172},[121,566,227],{"class":127},[121,568,570,572,574,576,578,580,582,584],{"class":123,"line":569},31,[121,571,344],{"class":127},[121,573,405],{"class":299},[121,575,141],{"class":127},[121,577,144],{"class":127},[121,579,218],{"class":127},[121,581,414],{"class":221},[121,583,141],{"class":127},[121,585,227],{"class":127},[121,587,589,591,593,595,597,599],{"class":123,"line":588},32,[121,590,344],{"class":127},[121,592,426],{"class":299},[121,594,141],{"class":127},[121,596,144],{"class":127},[121,598,433],{"class":172},[121,600,227],{"class":127},[121,602,604,606,608,610,612],{"class":123,"line":603},33,[121,605,344],{"class":127},[121,607,173],{"class":299},[121,609,141],{"class":127},[121,611,144],{"class":127},[121,613,614],{"class":127}," true\n",[121,616,618],{"class":123,"line":617},34,[121,619,620],{"class":127},"            }\n",[121,622,624],{"class":123,"line":623},35,[121,625,626],{"class":127},"          ],\n",[121,628,630,632,635,637,639],{"class":123,"line":629},36,[121,631,207],{"class":127},[121,633,634],{"class":210},"host_header",[121,636,141],{"class":127},[121,638,144],{"class":127},[121,640,147],{"class":127},[121,642,644,646,649,651,653,655,658],{"class":123,"line":643},37,[121,645,296],{"class":127},[121,647,648],{"class":299},"mode",[121,650,141],{"class":127},[121,652,144],{"class":127},[121,654,218],{"class":127},[121,656,657],{"class":221},"visitor",[121,659,312],{"class":127},[121,661,663],{"class":123,"line":662},38,[121,664,318],{"class":127},[121,666,668,670,673,675,677],{"class":123,"line":667},39,[121,669,207],{"class":127},[121,671,672],{"class":210},"health_check",[121,674,141],{"class":127},[121,676,144],{"class":127},[121,678,147],{"class":127},[121,680,682,684,686,688,690,692,695],{"class":123,"line":681},40,[121,683,296],{"class":127},[121,685,648],{"class":299},[121,687,141],{"class":127},[121,689,144],{"class":127},[121,691,218],{"class":127},[121,693,694],{"class":221},"off",[121,696,312],{"class":127},[121,698,700],{"class":123,"line":699},41,[121,701,702],{"class":127},"          }\n",[121,704,706],{"class":123,"line":705},42,[121,707,708],{"class":127},"        }\n",[121,710,712],{"class":123,"line":711},43,[121,713,714],{"class":127},"      ]\n",[121,716,718],{"class":123,"line":717},44,[121,719,720],{"class":127},"    }\n",[121,722,724],{"class":123,"line":723},45,[121,725,726],{"class":127},"  }\n",[121,728,730],{"class":123,"line":729},46,[121,731,732],{"class":127},"}\n",[106,734,736],{"id":735},"load-balancer-structure","Load balancer structure",[738,739,740,759],"table",{},[741,742,743],"thead",{},[744,745,746,750,753,756],"tr",{},[747,748,749],"th",{},"Field",[747,751,752],{},"Type",[747,754,755],{},"Required",[747,757,758],{},"Description",[760,761,762,778,791,810,824,838,851,864],"tbody",{},[744,763,764,769,772,775],{},[765,766,767],"td",{},[118,768,211],{},[765,770,771],{},"string",[765,773,774],{},"✅",[765,776,777],{},"Unique load balancer identifier",[744,779,780,784,786,788],{},[765,781,782],{},[118,783,235],{},[765,785,771],{},[765,787,774],{},[765,789,790],{},"Human-readable name",[744,792,793,797,800,803],{},[765,794,795],{},[118,796,173],{},[765,798,799],{},"bool",[765,801,802],{},"—",[765,804,805,806,809],{},"Enable\u002Fdisable (default: ",[118,807,808],{},"true",")",[744,811,812,816,819,821],{},[765,813,814],{},[118,815,269],{},[765,817,818],{},"array",[765,820,802],{},[765,822,823],{},"When to use this LB (empty = always)",[744,825,826,830,833,835],{},[765,827,828],{},[118,829,284],{},[765,831,832],{},"object",[765,834,774],{},[765,836,837],{},"Load balancing algorithm",[744,839,840,844,846,848],{},[765,841,842],{},[118,843,326],{},[765,845,818],{},[765,847,774],{},[765,849,850],{},"Upstream backend servers (at least 1)",[744,852,853,857,859,861],{},[765,854,855],{},[118,856,634],{},[765,858,832],{},[765,860,802],{},[765,862,863],{},"Host header forwarding mode",[744,865,866,870,872,874],{},[765,867,868],{},[118,869,672],{},[765,871,832],{},[765,873,802],{},[765,875,876],{},"Health check configuration",[106,878,880],{"id":879},"algorithms","Algorithms",[882,883,885],"h3",{"id":884},"round-robin","Round Robin",[102,887,888],{},"Distributes requests evenly across all targets in order.",[111,890,892],{"className":113,"code":891,"language":115,"meta":116,"style":116},"{\n  \"algorithm\": {\n    \"type\": \"round_robin\"\n  }\n}\n",[118,893,894,898,910,926,930],{"__ignoreMap":116},[121,895,896],{"class":123,"line":124},[121,897,128],{"class":127},[121,899,900,902,904,906,908],{"class":123,"line":131},[121,901,134],{"class":127},[121,903,284],{"class":137},[121,905,141],{"class":127},[121,907,144],{"class":127},[121,909,147],{"class":127},[121,911,912,914,916,918,920,922,924],{"class":123,"line":150},[121,913,153],{"class":127},[121,915,300],{"class":156},[121,917,141],{"class":127},[121,919,144],{"class":127},[121,921,218],{"class":127},[121,923,309],{"class":221},[121,925,312],{"class":127},[121,927,928],{"class":123,"line":166},[121,929,726],{"class":127},[121,931,932],{"class":123,"line":183},[121,933,732],{"class":127},[882,935,937],{"id":936},"weighted-round-robin","Weighted Round Robin",[102,939,940],{},"Distributes requests based on target weights. A target with weight 200 receives twice as many requests as one with weight 100.",[111,942,944],{"className":113,"code":943,"language":115,"meta":116,"style":116},"{\n  \"algorithm\": {\n    \"type\": \"weighted_round_robin\"\n  }\n}\n",[118,945,946,950,962,979,983],{"__ignoreMap":116},[121,947,948],{"class":123,"line":124},[121,949,128],{"class":127},[121,951,952,954,956,958,960],{"class":123,"line":131},[121,953,134],{"class":127},[121,955,284],{"class":137},[121,957,141],{"class":127},[121,959,144],{"class":127},[121,961,147],{"class":127},[121,963,964,966,968,970,972,974,977],{"class":123,"line":150},[121,965,153],{"class":127},[121,967,300],{"class":156},[121,969,141],{"class":127},[121,971,144],{"class":127},[121,973,218],{"class":127},[121,975,976],{"class":221},"weighted_round_robin",[121,978,312],{"class":127},[121,980,981],{"class":123,"line":166},[121,982,726],{"class":127},[121,984,985],{"class":123,"line":183},[121,986,732],{"class":127},[882,988,990],{"id":989},"least-connections","Least Connections",[102,992,993],{},"Routes to the target with the fewest active connections.",[111,995,997],{"className":113,"code":996,"language":115,"meta":116,"style":116},"{\n  \"algorithm\": {\n    \"type\": \"least_connections\"\n  }\n}\n",[118,998,999,1003,1015,1032,1036],{"__ignoreMap":116},[121,1000,1001],{"class":123,"line":124},[121,1002,128],{"class":127},[121,1004,1005,1007,1009,1011,1013],{"class":123,"line":131},[121,1006,134],{"class":127},[121,1008,284],{"class":137},[121,1010,141],{"class":127},[121,1012,144],{"class":127},[121,1014,147],{"class":127},[121,1016,1017,1019,1021,1023,1025,1027,1030],{"class":123,"line":150},[121,1018,153],{"class":127},[121,1020,300],{"class":156},[121,1022,141],{"class":127},[121,1024,144],{"class":127},[121,1026,218],{"class":127},[121,1028,1029],{"class":221},"least_connections",[121,1031,312],{"class":127},[121,1033,1034],{"class":123,"line":166},[121,1035,726],{"class":127},[121,1037,1038],{"class":123,"line":183},[121,1039,732],{"class":127},[882,1041,1043],{"id":1042},"fast-response","Fast Response",[102,1045,1046],{},"Routes to the target with the lowest EWMA (Exponentially Weighted Moving Average) latency.",[111,1048,1050],{"className":113,"code":1049,"language":115,"meta":116,"style":116},"{\n  \"algorithm\": {\n    \"type\": \"fast_response\"\n  }\n}\n",[118,1051,1052,1056,1068,1085,1089],{"__ignoreMap":116},[121,1053,1054],{"class":123,"line":124},[121,1055,128],{"class":127},[121,1057,1058,1060,1062,1064,1066],{"class":123,"line":131},[121,1059,134],{"class":127},[121,1061,284],{"class":137},[121,1063,141],{"class":127},[121,1065,144],{"class":127},[121,1067,147],{"class":127},[121,1069,1070,1072,1074,1076,1078,1080,1083],{"class":123,"line":150},[121,1071,153],{"class":127},[121,1073,300],{"class":156},[121,1075,141],{"class":127},[121,1077,144],{"class":127},[121,1079,218],{"class":127},[121,1081,1082],{"class":221},"fast_response",[121,1084,312],{"class":127},[121,1086,1087],{"class":123,"line":166},[121,1088,726],{"class":127},[121,1090,1091],{"class":123,"line":183},[121,1092,732],{"class":127},[882,1094,1096],{"id":1095},"sticky-session","Sticky Session",[102,1098,1099],{},"Routes the same client to the same target based on a hash of the key.",[111,1101,1103],{"className":113,"code":1102,"language":115,"meta":116,"style":116},"{\n  \"algorithm\": {\n    \"type\": \"sticky_session\",\n    \"key\": \"req.client_ip\"\n  }\n}\n",[118,1104,1105,1109,1121,1140,1158,1162],{"__ignoreMap":116},[121,1106,1107],{"class":123,"line":124},[121,1108,128],{"class":127},[121,1110,1111,1113,1115,1117,1119],{"class":123,"line":131},[121,1112,134],{"class":127},[121,1114,284],{"class":137},[121,1116,141],{"class":127},[121,1118,144],{"class":127},[121,1120,147],{"class":127},[121,1122,1123,1125,1127,1129,1131,1133,1136,1138],{"class":123,"line":150},[121,1124,153],{"class":127},[121,1126,300],{"class":156},[121,1128,141],{"class":127},[121,1130,144],{"class":127},[121,1132,218],{"class":127},[121,1134,1135],{"class":221},"sticky_session",[121,1137,141],{"class":127},[121,1139,227],{"class":127},[121,1141,1142,1144,1147,1149,1151,1153,1156],{"class":123,"line":166},[121,1143,153],{"class":127},[121,1145,1146],{"class":156},"key",[121,1148,141],{"class":127},[121,1150,144],{"class":127},[121,1152,218],{"class":127},[121,1154,1155],{"class":221},"req.client_ip",[121,1157,312],{"class":127},[121,1159,1160],{"class":123,"line":183},[121,1161,726],{"class":127},[121,1163,1164],{"class":123,"line":198},[121,1165,732],{"class":127},[102,1167,1168,1169,1171,1172,144],{},"The ",[118,1170,1146],{}," field accepts any ",[1173,1174,1176],"a",{"href":1175},"\u002Fquayel-gateway\u002Fconditions#condition-paths","condition path",[738,1178,1179,1188],{},[741,1180,1181],{},[744,1182,1183,1186],{},[747,1184,1185],{},"Key",[747,1187,758],{},[760,1189,1190,1199,1209,1219],{},[744,1191,1192,1196],{},[765,1193,1194],{},[118,1195,1155],{},[765,1197,1198],{},"Sticky by client IP (default)",[744,1200,1201,1206],{},[765,1202,1203],{},[118,1204,1205],{},"req.header.X-API-Key",[765,1207,1208],{},"Sticky by API key",[744,1210,1211,1216],{},[765,1212,1213],{},[118,1214,1215],{},"req.cookie.Session-ID",[765,1217,1218],{},"Sticky by session cookie",[744,1220,1221,1226],{},[765,1222,1223],{},[118,1224,1225],{},"req.header.X-Tenant-ID",[765,1227,1228],{},"Sticky by tenant",[106,1230,1231],{"id":326},"Targets",[738,1233,1234,1247],{},[741,1235,1236],{},[744,1237,1238,1240,1242,1245],{},[747,1239,749],{},[747,1241,752],{},[747,1243,1244],{},"Default",[747,1246,758],{},[760,1248,1249,1262,1275,1289,1310,1326,1341,1358],{},[744,1250,1251,1255,1257,1259],{},[765,1252,1253],{},[118,1254,211],{},[765,1256,771],{},[765,1258,774],{},[765,1260,1261],{},"Unique target identifier",[744,1263,1264,1268,1270,1272],{},[765,1265,1266],{},[118,1267,367],{},[765,1269,771],{},[765,1271,774],{},[765,1273,1274],{},"Backend hostname or IP",[744,1276,1277,1281,1284,1286],{},[765,1278,1279],{},[118,1280,388],{},[765,1282,1283],{},"number",[765,1285,774],{},[765,1287,1288],{},"Backend port",[744,1290,1291,1295,1297,1302],{},[765,1292,1293],{},[118,1294,405],{},[765,1296,771],{},[765,1298,1299],{},[118,1300,1301],{},"\"http\"",[765,1303,1304,1306,1307],{},[118,1305,1301],{}," or ",[118,1308,1309],{},"\"https\"",[744,1311,1312,1316,1318,1323],{},[765,1313,1314],{},[118,1315,426],{},[765,1317,1283],{},[765,1319,1320],{},[118,1321,1322],{},"100",[765,1324,1325],{},"Weight for weighted algorithms",[744,1327,1328,1332,1334,1338],{},[765,1329,1330],{},[118,1331,173],{},[765,1333,799],{},[765,1335,1336],{},[118,1337,808],{},[765,1339,1340],{},"Enable\u002Fdisable target",[744,1342,1343,1348,1350,1355],{},[765,1344,1345],{},[118,1346,1347],{},"tls.verify",[765,1349,799],{},[765,1351,1352],{},[118,1353,1354],{},"false",[765,1356,1357],{},"Verify upstream TLS certificate",[744,1359,1360,1365,1367,1369],{},[765,1361,1362],{},[118,1363,1364],{},"tls.sni",[765,1366,771],{},[765,1368,802],{},[765,1370,1371],{},"Custom SNI for TLS handshake",[882,1373,1375],{"id":1374},"tls-configuration","TLS configuration",[111,1377,1379],{"className":113,"code":1378,"language":115,"meta":116,"style":116},"{\n  \"id\": \"secure-backend\",\n  \"host\": \"backend.internal\",\n  \"port\": 443,\n  \"protocol\": \"https\",\n  \"weight\": 100,\n  \"enabled\": true,\n  \"tls\": {\n    \"verify\": true,\n    \"sni\": \"api.example.com\"\n  }\n}\n",[118,1380,1381,1385,1404,1423,1438,1457,1471,1483,1495,1507,1524,1528],{"__ignoreMap":116},[121,1382,1383],{"class":123,"line":124},[121,1384,128],{"class":127},[121,1386,1387,1389,1391,1393,1395,1397,1400,1402],{"class":123,"line":131},[121,1388,134],{"class":127},[121,1390,211],{"class":137},[121,1392,141],{"class":127},[121,1394,144],{"class":127},[121,1396,218],{"class":127},[121,1398,1399],{"class":221},"secure-backend",[121,1401,141],{"class":127},[121,1403,227],{"class":127},[121,1405,1406,1408,1410,1412,1414,1416,1419,1421],{"class":123,"line":150},[121,1407,134],{"class":127},[121,1409,367],{"class":137},[121,1411,141],{"class":127},[121,1413,144],{"class":127},[121,1415,218],{"class":127},[121,1417,1418],{"class":221},"backend.internal",[121,1420,141],{"class":127},[121,1422,227],{"class":127},[121,1424,1425,1427,1429,1431,1433,1436],{"class":123,"line":166},[121,1426,134],{"class":127},[121,1428,388],{"class":137},[121,1430,141],{"class":127},[121,1432,144],{"class":127},[121,1434,1435],{"class":172}," 443",[121,1437,227],{"class":127},[121,1439,1440,1442,1444,1446,1448,1450,1453,1455],{"class":123,"line":183},[121,1441,134],{"class":127},[121,1443,405],{"class":137},[121,1445,141],{"class":127},[121,1447,144],{"class":127},[121,1449,218],{"class":127},[121,1451,1452],{"class":221},"https",[121,1454,141],{"class":127},[121,1456,227],{"class":127},[121,1458,1459,1461,1463,1465,1467,1469],{"class":123,"line":198},[121,1460,134],{"class":127},[121,1462,426],{"class":137},[121,1464,141],{"class":127},[121,1466,144],{"class":127},[121,1468,433],{"class":172},[121,1470,227],{"class":127},[121,1472,1473,1475,1477,1479,1481],{"class":123,"line":204},[121,1474,134],{"class":127},[121,1476,173],{"class":137},[121,1478,141],{"class":127},[121,1480,144],{"class":127},[121,1482,180],{"class":127},[121,1484,1485,1487,1489,1491,1493],{"class":123,"line":230},[121,1486,134],{"class":127},[121,1488,456],{"class":137},[121,1490,141],{"class":127},[121,1492,144],{"class":127},[121,1494,147],{"class":127},[121,1496,1497,1499,1501,1503,1505],{"class":123,"line":251},[121,1498,153],{"class":127},[121,1500,472],{"class":156},[121,1502,141],{"class":127},[121,1504,144],{"class":127},[121,1506,180],{"class":127},[121,1508,1509,1511,1513,1515,1517,1519,1522],{"class":123,"line":264},[121,1510,153],{"class":127},[121,1512,487],{"class":156},[121,1514,141],{"class":127},[121,1516,144],{"class":127},[121,1518,218],{"class":127},[121,1520,1521],{"class":221},"api.example.com",[121,1523,312],{"class":127},[121,1525,1526],{"class":123,"line":279},[121,1527,726],{"class":127},[121,1529,1530],{"class":123,"line":293},[121,1531,732],{"class":127},[102,1533,1534,1535,1537],{},"When ",[118,1536,1364],{}," is not set:",[1539,1540,1541,1549],"ul",{},[1542,1543,1544,1545,1548],"li",{},"If target host is an IP → uses the visitor's ",[118,1546,1547],{},"Host"," header",[1542,1550,1551],{},"If target host is a hostname → uses the target hostname",[106,1553,1555],{"id":1554},"host-header","Host header",[102,1557,1558,1559,1561],{},"Controls what ",[118,1560,1547],{}," header is sent to the upstream.",[738,1563,1564,1573],{},[741,1565,1566],{},[744,1567,1568,1571],{},[747,1569,1570],{},"Mode",[747,1572,758],{},[760,1574,1575,1586,1596],{},[744,1576,1577,1581],{},[765,1578,1579],{},[118,1580,657],{},[765,1582,1583,1584,1548],{},"Forward the visitor's original ",[118,1585,1547],{},[744,1587,1588,1593],{},[765,1589,1590],{},[118,1591,1592],{},"custom",[765,1594,1595],{},"Use a custom value",[744,1597,1598,1603],{},[765,1599,1600],{},[118,1601,1602],{},"target",[765,1604,1605],{},"Use the target's hostname",[111,1607,1609],{"className":113,"code":1608,"language":115,"meta":116,"style":116},"{\n  \"host_header\": {\n    \"mode\": \"custom\",\n    \"value\": \"api.internal.example.com\"\n  }\n}\n",[118,1610,1611,1615,1627,1645,1663,1667],{"__ignoreMap":116},[121,1612,1613],{"class":123,"line":124},[121,1614,128],{"class":127},[121,1616,1617,1619,1621,1623,1625],{"class":123,"line":131},[121,1618,134],{"class":127},[121,1620,634],{"class":137},[121,1622,141],{"class":127},[121,1624,144],{"class":127},[121,1626,147],{"class":127},[121,1628,1629,1631,1633,1635,1637,1639,1641,1643],{"class":123,"line":150},[121,1630,153],{"class":127},[121,1632,648],{"class":156},[121,1634,141],{"class":127},[121,1636,144],{"class":127},[121,1638,218],{"class":127},[121,1640,1592],{"class":221},[121,1642,141],{"class":127},[121,1644,227],{"class":127},[121,1646,1647,1649,1652,1654,1656,1658,1661],{"class":123,"line":166},[121,1648,153],{"class":127},[121,1650,1651],{"class":156},"value",[121,1653,141],{"class":127},[121,1655,144],{"class":127},[121,1657,218],{"class":127},[121,1659,1660],{"class":221},"api.internal.example.com",[121,1662,312],{"class":127},[121,1664,1665],{"class":123,"line":183},[121,1666,726],{"class":127},[121,1668,1669],{"class":123,"line":198},[121,1670,732],{"class":127},[106,1672,1674],{"id":1673},"health-checks","Health checks",[882,1676,1678],{"id":1677},"off-mode","Off mode",[102,1680,1681],{},"No health checks. All enabled targets are considered healthy.",[111,1683,1685],{"className":113,"code":1684,"language":115,"meta":116,"style":116},"{\n  \"health_check\": {\n    \"mode\": \"off\"\n  }\n}\n",[118,1686,1687,1691,1703,1719,1723],{"__ignoreMap":116},[121,1688,1689],{"class":123,"line":124},[121,1690,128],{"class":127},[121,1692,1693,1695,1697,1699,1701],{"class":123,"line":131},[121,1694,134],{"class":127},[121,1696,672],{"class":137},[121,1698,141],{"class":127},[121,1700,144],{"class":127},[121,1702,147],{"class":127},[121,1704,1705,1707,1709,1711,1713,1715,1717],{"class":123,"line":150},[121,1706,153],{"class":127},[121,1708,648],{"class":156},[121,1710,141],{"class":127},[121,1712,144],{"class":127},[121,1714,218],{"class":127},[121,1716,694],{"class":221},[121,1718,312],{"class":127},[121,1720,1721],{"class":123,"line":166},[121,1722,726],{"class":127},[121,1724,1725],{"class":123,"line":183},[121,1726,732],{"class":127},[882,1728,1730],{"id":1729},"https-mode","HTTPS mode",[102,1732,1733,1734,1737,1738,1740],{},"Periodic HTTP(S) health checks — an HTTP GET to ",[118,1735,1736],{},"path"," using the target's ",[118,1739,405],{},".",[111,1742,1744],{"className":113,"code":1743,"language":115,"meta":116,"style":116},"{\n  \"health_check\": {\n    \"mode\": \"https\",\n    \"path\": \"\u002Fhealth\",\n    \"interval_seconds\": 5,\n    \"timeout_ms\": 1000,\n    \"expected_statuses\": [200],\n    \"healthy_threshold\": 2,\n    \"unhealthy_threshold\": 3\n  }\n}\n",[118,1745,1746,1750,1762,1780,1799,1815,1831,1851,1867,1881,1885],{"__ignoreMap":116},[121,1747,1748],{"class":123,"line":124},[121,1749,128],{"class":127},[121,1751,1752,1754,1756,1758,1760],{"class":123,"line":131},[121,1753,134],{"class":127},[121,1755,672],{"class":137},[121,1757,141],{"class":127},[121,1759,144],{"class":127},[121,1761,147],{"class":127},[121,1763,1764,1766,1768,1770,1772,1774,1776,1778],{"class":123,"line":150},[121,1765,153],{"class":127},[121,1767,648],{"class":156},[121,1769,141],{"class":127},[121,1771,144],{"class":127},[121,1773,218],{"class":127},[121,1775,1452],{"class":221},[121,1777,141],{"class":127},[121,1779,227],{"class":127},[121,1781,1782,1784,1786,1788,1790,1792,1795,1797],{"class":123,"line":166},[121,1783,153],{"class":127},[121,1785,1736],{"class":156},[121,1787,141],{"class":127},[121,1789,144],{"class":127},[121,1791,218],{"class":127},[121,1793,1794],{"class":221},"\u002Fhealth",[121,1796,141],{"class":127},[121,1798,227],{"class":127},[121,1800,1801,1803,1806,1808,1810,1813],{"class":123,"line":183},[121,1802,153],{"class":127},[121,1804,1805],{"class":156},"interval_seconds",[121,1807,141],{"class":127},[121,1809,144],{"class":127},[121,1811,1812],{"class":172}," 5",[121,1814,227],{"class":127},[121,1816,1817,1819,1822,1824,1826,1829],{"class":123,"line":198},[121,1818,153],{"class":127},[121,1820,1821],{"class":156},"timeout_ms",[121,1823,141],{"class":127},[121,1825,144],{"class":127},[121,1827,1828],{"class":172}," 1000",[121,1830,227],{"class":127},[121,1832,1833,1835,1838,1840,1842,1845,1848],{"class":123,"line":204},[121,1834,153],{"class":127},[121,1836,1837],{"class":156},"expected_statuses",[121,1839,141],{"class":127},[121,1841,144],{"class":127},[121,1843,1844],{"class":127}," [",[121,1846,1847],{"class":172},"200",[121,1849,1850],{"class":127},"],\n",[121,1852,1853,1855,1858,1860,1862,1865],{"class":123,"line":230},[121,1854,153],{"class":127},[121,1856,1857],{"class":156},"healthy_threshold",[121,1859,141],{"class":127},[121,1861,144],{"class":127},[121,1863,1864],{"class":172}," 2",[121,1866,227],{"class":127},[121,1868,1869,1871,1874,1876,1878],{"class":123,"line":251},[121,1870,153],{"class":127},[121,1872,1873],{"class":156},"unhealthy_threshold",[121,1875,141],{"class":127},[121,1877,144],{"class":127},[121,1879,1880],{"class":172}," 3\n",[121,1882,1883],{"class":123,"line":264},[121,1884,726],{"class":127},[121,1886,1887],{"class":123,"line":279},[121,1888,732],{"class":127},[1890,1891,1892,1893,1896,1897,1899,1900,1903,1904,1906,1907,1911,1912,1914,1915,1917,1918,1306,1920,1922],"caution",{},"The valid ",[118,1894,1895],{},"health_check.mode"," values are ",[118,1898,1452],{},", ",[118,1901,1902],{},"accepts_connections",", and ",[118,1905,694],{},". There is ",[1908,1909,1910],"strong",{},"no"," ",[118,1913,1301],{}," mode — ",[118,1916,1452],{}," performs an HTTP(S) GET using the target's own protocol (",[118,1919,414],{},[118,1921,1452],{}," targets both work).",[738,1924,1925,1937],{},[741,1926,1927],{},[744,1928,1929,1931,1933,1935],{},[747,1930,749],{},[747,1932,752],{},[747,1934,1244],{},[747,1936,758],{},[760,1938,1939,1955,1972,1988,2004,2020],{},[744,1940,1941,1945,1947,1952],{},[765,1942,1943],{},[118,1944,1736],{},[765,1946,771],{},[765,1948,1949],{},[118,1950,1951],{},"\"\u002F\"",[765,1953,1954],{},"Health check endpoint",[744,1956,1957,1961,1964,1969],{},[765,1958,1959],{},[118,1960,1805],{},[765,1962,1963],{},"int",[765,1965,1966],{},[118,1967,1968],{},"5",[765,1970,1971],{},"Check interval",[744,1973,1974,1978,1980,1985],{},[765,1975,1976],{},[118,1977,1821],{},[765,1979,1963],{},[765,1981,1982],{},[118,1983,1984],{},"1000",[765,1986,1987],{},"Request timeout",[744,1989,1990,1994,1996,2001],{},[765,1991,1992],{},[118,1993,1837],{},[765,1995,818],{},[765,1997,1998],{},[118,1999,2000],{},"[200]",[765,2002,2003],{},"Healthy status codes",[744,2005,2006,2010,2012,2017],{},[765,2007,2008],{},[118,2009,1857],{},[765,2011,1963],{},[765,2013,2014],{},[118,2015,2016],{},"2",[765,2018,2019],{},"Consecutive successes to mark healthy",[744,2021,2022,2026,2028,2033],{},[765,2023,2024],{},[118,2025,1873],{},[765,2027,1963],{},[765,2029,2030],{},[118,2031,2032],{},"3",[765,2034,2035],{},"Consecutive failures to mark unhealthy",[882,2037,2039],{"id":2038},"accepts-connections-mode","Accepts connections mode",[102,2041,2042],{},"Simple TCP connection check.",[111,2044,2046],{"className":113,"code":2045,"language":115,"meta":116,"style":116},"{\n  \"health_check\": {\n    \"mode\": \"accepts_connections\",\n    \"interval_seconds\": 5,\n    \"timeout_ms\": 1000\n  }\n}\n",[118,2047,2048,2052,2064,2082,2096,2109,2113],{"__ignoreMap":116},[121,2049,2050],{"class":123,"line":124},[121,2051,128],{"class":127},[121,2053,2054,2056,2058,2060,2062],{"class":123,"line":131},[121,2055,134],{"class":127},[121,2057,672],{"class":137},[121,2059,141],{"class":127},[121,2061,144],{"class":127},[121,2063,147],{"class":127},[121,2065,2066,2068,2070,2072,2074,2076,2078,2080],{"class":123,"line":150},[121,2067,153],{"class":127},[121,2069,648],{"class":156},[121,2071,141],{"class":127},[121,2073,144],{"class":127},[121,2075,218],{"class":127},[121,2077,1902],{"class":221},[121,2079,141],{"class":127},[121,2081,227],{"class":127},[121,2083,2084,2086,2088,2090,2092,2094],{"class":123,"line":166},[121,2085,153],{"class":127},[121,2087,1805],{"class":156},[121,2089,141],{"class":127},[121,2091,144],{"class":127},[121,2093,1812],{"class":172},[121,2095,227],{"class":127},[121,2097,2098,2100,2102,2104,2106],{"class":123,"line":183},[121,2099,153],{"class":127},[121,2101,1821],{"class":156},[121,2103,141],{"class":127},[121,2105,144],{"class":127},[121,2107,2108],{"class":172}," 1000\n",[121,2110,2111],{"class":123,"line":198},[121,2112,726],{"class":127},[121,2114,2115],{"class":123,"line":204},[121,2116,732],{"class":127},[106,2118,2120],{"id":2119},"how-it-works","How it works",[111,2122,2127],{"className":2123,"code":2125,"language":2126},[2124],"language-text","Request arrives\n    │\n    ▼\n1. Evaluate conditions for each load balancer\n    │\n    ├── No match → continue (no upstream selected)\n    │\n    └── Match:\n        │\n        ├── 2. Filter enabled targets\n        │\n        ├── No enabled targets → 503 \"no_healthy_upstream\"\n        │\n        └── 3. Select target using algorithm\n            │\n            ├── round_robin → atomic counter % len\n            ├── weighted_round_robin → weight-based selection\n            ├── least_connections → min active connections\n            ├── fast_response → min EWMA latency\n            └── sticky_session → hash(key + target_id)\n\n            │\n            ├── 4. Record selection in context\n            ├── 5. Increment connection count\n            │\n            └── 6. Create HttpPeer → forward to upstream\n","text",[118,2128,2125],{"__ignoreMap":116},[106,2130,2132],{"id":2131},"examples","Examples",[882,2134,2136],{"id":2135},"simple-round-robin","Simple round-robin",[111,2138,2140],{"className":113,"code":2139,"language":115,"meta":116,"style":116},"{\n  \"id\": \"default\",\n  \"name\": \"Backend Pool\",\n  \"enabled\": true,\n  \"conditions\": [],\n  \"algorithm\": { \"type\": \"round_robin\" },\n  \"targets\": [\n    { \"id\": \"b1\", \"host\": \"10.0.0.1\", \"port\": 8080, \"protocol\": \"http\", \"weight\": 100, \"enabled\": true },\n    { \"id\": \"b2\", \"host\": \"10.0.0.2\", \"port\": 8080, \"protocol\": \"http\", \"weight\": 100, \"enabled\": true }\n  ],\n  \"host_header\": { \"mode\": \"visitor\" },\n  \"health_check\": { \"mode\": \"off\" }\n}\n",[118,2141,2142,2146,2164,2183,2195,2207,2237,2249,2341,2431,2436,2464,2492],{"__ignoreMap":116},[121,2143,2144],{"class":123,"line":124},[121,2145,128],{"class":127},[121,2147,2148,2150,2152,2154,2156,2158,2160,2162],{"class":123,"line":131},[121,2149,134],{"class":127},[121,2151,211],{"class":137},[121,2153,141],{"class":127},[121,2155,144],{"class":127},[121,2157,218],{"class":127},[121,2159,222],{"class":221},[121,2161,141],{"class":127},[121,2163,227],{"class":127},[121,2165,2166,2168,2170,2172,2174,2176,2179,2181],{"class":123,"line":150},[121,2167,134],{"class":127},[121,2169,235],{"class":137},[121,2171,141],{"class":127},[121,2173,144],{"class":127},[121,2175,218],{"class":127},[121,2177,2178],{"class":221},"Backend Pool",[121,2180,141],{"class":127},[121,2182,227],{"class":127},[121,2184,2185,2187,2189,2191,2193],{"class":123,"line":166},[121,2186,134],{"class":127},[121,2188,173],{"class":137},[121,2190,141],{"class":127},[121,2192,144],{"class":127},[121,2194,180],{"class":127},[121,2196,2197,2199,2201,2203,2205],{"class":123,"line":183},[121,2198,134],{"class":127},[121,2200,269],{"class":137},[121,2202,141],{"class":127},[121,2204,144],{"class":127},[121,2206,276],{"class":127},[121,2208,2209,2211,2213,2215,2217,2220,2222,2224,2226,2228,2230,2232,2234],{"class":123,"line":198},[121,2210,134],{"class":127},[121,2212,284],{"class":137},[121,2214,141],{"class":127},[121,2216,144],{"class":127},[121,2218,2219],{"class":127}," {",[121,2221,218],{"class":127},[121,2223,300],{"class":156},[121,2225,141],{"class":127},[121,2227,144],{"class":127},[121,2229,218],{"class":127},[121,2231,309],{"class":221},[121,2233,141],{"class":127},[121,2235,2236],{"class":127}," },\n",[121,2238,2239,2241,2243,2245,2247],{"class":123,"line":204},[121,2240,134],{"class":127},[121,2242,326],{"class":137},[121,2244,141],{"class":127},[121,2246,144],{"class":127},[121,2248,195],{"class":127},[121,2250,2251,2254,2256,2258,2260,2262,2264,2267,2269,2272,2274,2276,2278,2280,2282,2284,2286,2288,2290,2292,2294,2296,2298,2300,2302,2304,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2339],{"class":123,"line":230},[121,2252,2253],{"class":127},"    {",[121,2255,218],{"class":127},[121,2257,211],{"class":156},[121,2259,141],{"class":127},[121,2261,144],{"class":127},[121,2263,218],{"class":127},[121,2265,2266],{"class":221},"b1",[121,2268,141],{"class":127},[121,2270,2271],{"class":127},",",[121,2273,218],{"class":127},[121,2275,367],{"class":156},[121,2277,141],{"class":127},[121,2279,144],{"class":127},[121,2281,218],{"class":127},[121,2283,376],{"class":221},[121,2285,141],{"class":127},[121,2287,2271],{"class":127},[121,2289,218],{"class":127},[121,2291,388],{"class":156},[121,2293,141],{"class":127},[121,2295,144],{"class":127},[121,2297,395],{"class":172},[121,2299,2271],{"class":127},[121,2301,218],{"class":127},[121,2303,405],{"class":156},[121,2305,141],{"class":127},[121,2307,144],{"class":127},[121,2309,218],{"class":127},[121,2311,414],{"class":221},[121,2313,141],{"class":127},[121,2315,2271],{"class":127},[121,2317,218],{"class":127},[121,2319,426],{"class":156},[121,2321,141],{"class":127},[121,2323,144],{"class":127},[121,2325,433],{"class":172},[121,2327,2271],{"class":127},[121,2329,218],{"class":127},[121,2331,173],{"class":156},[121,2333,141],{"class":127},[121,2335,144],{"class":127},[121,2337,2338],{"class":127}," true",[121,2340,2236],{"class":127},[121,2342,2343,2345,2347,2349,2351,2353,2355,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428],{"class":123,"line":251},[121,2344,2253],{"class":127},[121,2346,218],{"class":127},[121,2348,211],{"class":156},[121,2350,141],{"class":127},[121,2352,144],{"class":127},[121,2354,218],{"class":127},[121,2356,2357],{"class":221},"b2",[121,2359,141],{"class":127},[121,2361,2271],{"class":127},[121,2363,218],{"class":127},[121,2365,367],{"class":156},[121,2367,141],{"class":127},[121,2369,144],{"class":127},[121,2371,218],{"class":127},[121,2373,547],{"class":221},[121,2375,141],{"class":127},[121,2377,2271],{"class":127},[121,2379,218],{"class":127},[121,2381,388],{"class":156},[121,2383,141],{"class":127},[121,2385,144],{"class":127},[121,2387,395],{"class":172},[121,2389,2271],{"class":127},[121,2391,218],{"class":127},[121,2393,405],{"class":156},[121,2395,141],{"class":127},[121,2397,144],{"class":127},[121,2399,218],{"class":127},[121,2401,414],{"class":221},[121,2403,141],{"class":127},[121,2405,2271],{"class":127},[121,2407,218],{"class":127},[121,2409,426],{"class":156},[121,2411,141],{"class":127},[121,2413,144],{"class":127},[121,2415,433],{"class":172},[121,2417,2271],{"class":127},[121,2419,218],{"class":127},[121,2421,173],{"class":156},[121,2423,141],{"class":127},[121,2425,144],{"class":127},[121,2427,2338],{"class":127},[121,2429,2430],{"class":127}," }\n",[121,2432,2433],{"class":123,"line":264},[121,2434,2435],{"class":127},"  ],\n",[121,2437,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456,2458,2460,2462],{"class":123,"line":279},[121,2439,134],{"class":127},[121,2441,634],{"class":137},[121,2443,141],{"class":127},[121,2445,144],{"class":127},[121,2447,2219],{"class":127},[121,2449,218],{"class":127},[121,2451,648],{"class":156},[121,2453,141],{"class":127},[121,2455,144],{"class":127},[121,2457,218],{"class":127},[121,2459,657],{"class":221},[121,2461,141],{"class":127},[121,2463,2236],{"class":127},[121,2465,2466,2468,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490],{"class":123,"line":293},[121,2467,134],{"class":127},[121,2469,672],{"class":137},[121,2471,141],{"class":127},[121,2473,144],{"class":127},[121,2475,2219],{"class":127},[121,2477,218],{"class":127},[121,2479,648],{"class":156},[121,2481,141],{"class":127},[121,2483,144],{"class":127},[121,2485,218],{"class":127},[121,2487,694],{"class":221},[121,2489,141],{"class":127},[121,2491,2430],{"class":127},[121,2493,2494],{"class":123,"line":315},[121,2495,732],{"class":127},[882,2497,2499],{"id":2498},"weighted-with-health-checks","Weighted with health checks",[111,2501,2503],{"className":113,"code":2502,"language":115,"meta":116,"style":116},"{\n  \"id\": \"default\",\n  \"name\": \"Production Pool\",\n  \"enabled\": true,\n  \"conditions\": [],\n  \"algorithm\": { \"type\": \"weighted_round_robin\" },\n  \"targets\": [\n    { \"id\": \"large\", \"host\": \"10.0.0.1\", \"port\": 8080, \"protocol\": \"http\", \"weight\": 200, \"enabled\": true },\n    { \"id\": \"small\", \"host\": \"10.0.0.2\", \"port\": 8080, \"protocol\": \"http\", \"weight\": 100, \"enabled\": true }\n  ],\n  \"host_header\": { \"mode\": \"visitor\" },\n  \"health_check\": {\n    \"mode\": \"https\",\n    \"path\": \"\u002Fhealth\",\n    \"interval_seconds\": 10,\n    \"timeout_ms\": 2000,\n    \"expected_statuses\": [200, 204],\n    \"healthy_threshold\": 2,\n    \"unhealthy_threshold\": 3\n  }\n}\n",[118,2504,2505,2509,2527,2546,2558,2570,2598,2610,2700,2789,2793,2821,2833,2851,2869,2884,2899,2920,2934,2946,2950],{"__ignoreMap":116},[121,2506,2507],{"class":123,"line":124},[121,2508,128],{"class":127},[121,2510,2511,2513,2515,2517,2519,2521,2523,2525],{"class":123,"line":131},[121,2512,134],{"class":127},[121,2514,211],{"class":137},[121,2516,141],{"class":127},[121,2518,144],{"class":127},[121,2520,218],{"class":127},[121,2522,222],{"class":221},[121,2524,141],{"class":127},[121,2526,227],{"class":127},[121,2528,2529,2531,2533,2535,2537,2539,2542,2544],{"class":123,"line":150},[121,2530,134],{"class":127},[121,2532,235],{"class":137},[121,2534,141],{"class":127},[121,2536,144],{"class":127},[121,2538,218],{"class":127},[121,2540,2541],{"class":221},"Production Pool",[121,2543,141],{"class":127},[121,2545,227],{"class":127},[121,2547,2548,2550,2552,2554,2556],{"class":123,"line":166},[121,2549,134],{"class":127},[121,2551,173],{"class":137},[121,2553,141],{"class":127},[121,2555,144],{"class":127},[121,2557,180],{"class":127},[121,2559,2560,2562,2564,2566,2568],{"class":123,"line":183},[121,2561,134],{"class":127},[121,2563,269],{"class":137},[121,2565,141],{"class":127},[121,2567,144],{"class":127},[121,2569,276],{"class":127},[121,2571,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590,2592,2594,2596],{"class":123,"line":198},[121,2573,134],{"class":127},[121,2575,284],{"class":137},[121,2577,141],{"class":127},[121,2579,144],{"class":127},[121,2581,2219],{"class":127},[121,2583,218],{"class":127},[121,2585,300],{"class":156},[121,2587,141],{"class":127},[121,2589,144],{"class":127},[121,2591,218],{"class":127},[121,2593,976],{"class":221},[121,2595,141],{"class":127},[121,2597,2236],{"class":127},[121,2599,2600,2602,2604,2606,2608],{"class":123,"line":204},[121,2601,134],{"class":127},[121,2603,326],{"class":137},[121,2605,141],{"class":127},[121,2607,144],{"class":127},[121,2609,195],{"class":127},[121,2611,2612,2614,2616,2618,2620,2622,2624,2627,2629,2631,2633,2635,2637,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2686,2688,2690,2692,2694,2696,2698],{"class":123,"line":230},[121,2613,2253],{"class":127},[121,2615,218],{"class":127},[121,2617,211],{"class":156},[121,2619,141],{"class":127},[121,2621,144],{"class":127},[121,2623,218],{"class":127},[121,2625,2626],{"class":221},"large",[121,2628,141],{"class":127},[121,2630,2271],{"class":127},[121,2632,218],{"class":127},[121,2634,367],{"class":156},[121,2636,141],{"class":127},[121,2638,144],{"class":127},[121,2640,218],{"class":127},[121,2642,376],{"class":221},[121,2644,141],{"class":127},[121,2646,2271],{"class":127},[121,2648,218],{"class":127},[121,2650,388],{"class":156},[121,2652,141],{"class":127},[121,2654,144],{"class":127},[121,2656,395],{"class":172},[121,2658,2271],{"class":127},[121,2660,218],{"class":127},[121,2662,405],{"class":156},[121,2664,141],{"class":127},[121,2666,144],{"class":127},[121,2668,218],{"class":127},[121,2670,414],{"class":221},[121,2672,141],{"class":127},[121,2674,2271],{"class":127},[121,2676,218],{"class":127},[121,2678,426],{"class":156},[121,2680,141],{"class":127},[121,2682,144],{"class":127},[121,2684,2685],{"class":172}," 200",[121,2687,2271],{"class":127},[121,2689,218],{"class":127},[121,2691,173],{"class":156},[121,2693,141],{"class":127},[121,2695,144],{"class":127},[121,2697,2338],{"class":127},[121,2699,2236],{"class":127},[121,2701,2702,2704,2706,2708,2710,2712,2714,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787],{"class":123,"line":251},[121,2703,2253],{"class":127},[121,2705,218],{"class":127},[121,2707,211],{"class":156},[121,2709,141],{"class":127},[121,2711,144],{"class":127},[121,2713,218],{"class":127},[121,2715,2716],{"class":221},"small",[121,2718,141],{"class":127},[121,2720,2271],{"class":127},[121,2722,218],{"class":127},[121,2724,367],{"class":156},[121,2726,141],{"class":127},[121,2728,144],{"class":127},[121,2730,218],{"class":127},[121,2732,547],{"class":221},[121,2734,141],{"class":127},[121,2736,2271],{"class":127},[121,2738,218],{"class":127},[121,2740,388],{"class":156},[121,2742,141],{"class":127},[121,2744,144],{"class":127},[121,2746,395],{"class":172},[121,2748,2271],{"class":127},[121,2750,218],{"class":127},[121,2752,405],{"class":156},[121,2754,141],{"class":127},[121,2756,144],{"class":127},[121,2758,218],{"class":127},[121,2760,414],{"class":221},[121,2762,141],{"class":127},[121,2764,2271],{"class":127},[121,2766,218],{"class":127},[121,2768,426],{"class":156},[121,2770,141],{"class":127},[121,2772,144],{"class":127},[121,2774,433],{"class":172},[121,2776,2271],{"class":127},[121,2778,218],{"class":127},[121,2780,173],{"class":156},[121,2782,141],{"class":127},[121,2784,144],{"class":127},[121,2786,2338],{"class":127},[121,2788,2430],{"class":127},[121,2790,2791],{"class":123,"line":264},[121,2792,2435],{"class":127},[121,2794,2795,2797,2799,2801,2803,2805,2807,2809,2811,2813,2815,2817,2819],{"class":123,"line":279},[121,2796,134],{"class":127},[121,2798,634],{"class":137},[121,2800,141],{"class":127},[121,2802,144],{"class":127},[121,2804,2219],{"class":127},[121,2806,218],{"class":127},[121,2808,648],{"class":156},[121,2810,141],{"class":127},[121,2812,144],{"class":127},[121,2814,218],{"class":127},[121,2816,657],{"class":221},[121,2818,141],{"class":127},[121,2820,2236],{"class":127},[121,2822,2823,2825,2827,2829,2831],{"class":123,"line":293},[121,2824,134],{"class":127},[121,2826,672],{"class":137},[121,2828,141],{"class":127},[121,2830,144],{"class":127},[121,2832,147],{"class":127},[121,2834,2835,2837,2839,2841,2843,2845,2847,2849],{"class":123,"line":315},[121,2836,153],{"class":127},[121,2838,648],{"class":156},[121,2840,141],{"class":127},[121,2842,144],{"class":127},[121,2844,218],{"class":127},[121,2846,1452],{"class":221},[121,2848,141],{"class":127},[121,2850,227],{"class":127},[121,2852,2853,2855,2857,2859,2861,2863,2865,2867],{"class":123,"line":321},[121,2854,153],{"class":127},[121,2856,1736],{"class":156},[121,2858,141],{"class":127},[121,2860,144],{"class":127},[121,2862,218],{"class":127},[121,2864,1794],{"class":221},[121,2866,141],{"class":127},[121,2868,227],{"class":127},[121,2870,2871,2873,2875,2877,2879,2882],{"class":123,"line":335},[121,2872,153],{"class":127},[121,2874,1805],{"class":156},[121,2876,141],{"class":127},[121,2878,144],{"class":127},[121,2880,2881],{"class":172}," 10",[121,2883,227],{"class":127},[121,2885,2886,2888,2890,2892,2894,2897],{"class":123,"line":341},[121,2887,153],{"class":127},[121,2889,1821],{"class":156},[121,2891,141],{"class":127},[121,2893,144],{"class":127},[121,2895,2896],{"class":172}," 2000",[121,2898,227],{"class":127},[121,2900,2901,2903,2905,2907,2909,2911,2913,2915,2918],{"class":123,"line":362},[121,2902,153],{"class":127},[121,2904,1837],{"class":156},[121,2906,141],{"class":127},[121,2908,144],{"class":127},[121,2910,1844],{"class":127},[121,2912,1847],{"class":172},[121,2914,2271],{"class":127},[121,2916,2917],{"class":172}," 204",[121,2919,1850],{"class":127},[121,2921,2922,2924,2926,2928,2930,2932],{"class":123,"line":383},[121,2923,153],{"class":127},[121,2925,1857],{"class":156},[121,2927,141],{"class":127},[121,2929,144],{"class":127},[121,2931,1864],{"class":172},[121,2933,227],{"class":127},[121,2935,2936,2938,2940,2942,2944],{"class":123,"line":400},[121,2937,153],{"class":127},[121,2939,1873],{"class":156},[121,2941,141],{"class":127},[121,2943,144],{"class":127},[121,2945,1880],{"class":172},[121,2947,2948],{"class":123,"line":421},[121,2949,726],{"class":127},[121,2951,2952],{"class":123,"line":438},[121,2953,732],{"class":127},[882,2955,2957],{"id":2956},"multiple-pools-by-path","Multiple pools by path",[111,2959,2961],{"className":113,"code":2960,"language":115,"meta":116,"style":116},"{\n  \"load_balancers\": [\n    {\n      \"id\": \"api-pool\",\n      \"name\": \"API Servers\",\n      \"enabled\": true,\n      \"conditions\": [\n        { \"left\": \"req.path\", \"operator\": \"starts_with\", \"value\": \"\u002Fapi\u002F\" }\n      ],\n      \"algorithm\": { \"type\": \"least_connections\" },\n      \"targets\": [\n        { \"id\": \"api-1\", \"host\": \"10.0.1.1\", \"port\": 8080, \"protocol\": \"http\", \"weight\": 100, \"enabled\": true },\n        { \"id\": \"api-2\", \"host\": \"10.0.1.2\", \"port\": 8080, \"protocol\": \"http\", \"weight\": 100, \"enabled\": true }\n      ],\n      \"host_header\": { \"mode\": \"visitor\" },\n      \"health_check\": { \"mode\": \"off\" }\n    },\n    {\n      \"id\": \"static-pool\",\n      \"name\": \"Static Servers\",\n      \"enabled\": true,\n      \"conditions\": [],\n      \"algorithm\": { \"type\": \"round_robin\" },\n      \"targets\": [\n        { \"id\": \"static-1\", \"host\": \"10.0.2.1\", \"port\": 80, \"protocol\": \"http\", \"weight\": 100, \"enabled\": true }\n      ],\n      \"host_header\": { \"mode\": \"visitor\" },\n      \"health_check\": { \"mode\": \"off\" }\n    }\n  ]\n}\n",[118,2962,2963,2967,2979,2984,3003,3022,3034,3046,3104,3109,3137,3149,3239,3329,3333,3361,3389,3394,3398,3417,3436,3448,3460,3488,3500,3591,3595,3623,3651,3655,3660],{"__ignoreMap":116},[121,2964,2965],{"class":123,"line":124},[121,2966,128],{"class":127},[121,2968,2969,2971,2973,2975,2977],{"class":123,"line":131},[121,2970,134],{"class":127},[121,2972,188],{"class":137},[121,2974,141],{"class":127},[121,2976,144],{"class":127},[121,2978,195],{"class":127},[121,2980,2981],{"class":123,"line":150},[121,2982,2983],{"class":127},"    {\n",[121,2985,2986,2988,2990,2992,2994,2996,2999,3001],{"class":123,"line":166},[121,2987,169],{"class":127},[121,2989,211],{"class":156},[121,2991,141],{"class":127},[121,2993,144],{"class":127},[121,2995,218],{"class":127},[121,2997,2998],{"class":221},"api-pool",[121,3000,141],{"class":127},[121,3002,227],{"class":127},[121,3004,3005,3007,3009,3011,3013,3015,3018,3020],{"class":123,"line":183},[121,3006,169],{"class":127},[121,3008,235],{"class":156},[121,3010,141],{"class":127},[121,3012,144],{"class":127},[121,3014,218],{"class":127},[121,3016,3017],{"class":221},"API Servers",[121,3019,141],{"class":127},[121,3021,227],{"class":127},[121,3023,3024,3026,3028,3030,3032],{"class":123,"line":198},[121,3025,169],{"class":127},[121,3027,173],{"class":156},[121,3029,141],{"class":127},[121,3031,144],{"class":127},[121,3033,180],{"class":127},[121,3035,3036,3038,3040,3042,3044],{"class":123,"line":204},[121,3037,169],{"class":127},[121,3039,269],{"class":156},[121,3041,141],{"class":127},[121,3043,144],{"class":127},[121,3045,195],{"class":127},[121,3047,3048,3051,3053,3056,3058,3060,3062,3065,3067,3069,3071,3074,3076,3078,3080,3083,3085,3087,3089,3091,3093,3095,3097,3100,3102],{"class":123,"line":230},[121,3049,3050],{"class":127},"        {",[121,3052,218],{"class":127},[121,3054,3055],{"class":172},"left",[121,3057,141],{"class":127},[121,3059,144],{"class":127},[121,3061,218],{"class":127},[121,3063,3064],{"class":221},"req.path",[121,3066,141],{"class":127},[121,3068,2271],{"class":127},[121,3070,218],{"class":127},[121,3072,3073],{"class":172},"operator",[121,3075,141],{"class":127},[121,3077,144],{"class":127},[121,3079,218],{"class":127},[121,3081,3082],{"class":221},"starts_with",[121,3084,141],{"class":127},[121,3086,2271],{"class":127},[121,3088,218],{"class":127},[121,3090,1651],{"class":172},[121,3092,141],{"class":127},[121,3094,144],{"class":127},[121,3096,218],{"class":127},[121,3098,3099],{"class":221},"\u002Fapi\u002F",[121,3101,141],{"class":127},[121,3103,2430],{"class":127},[121,3105,3106],{"class":123,"line":251},[121,3107,3108],{"class":127},"      ],\n",[121,3110,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135],{"class":123,"line":264},[121,3112,169],{"class":127},[121,3114,284],{"class":156},[121,3116,141],{"class":127},[121,3118,144],{"class":127},[121,3120,2219],{"class":127},[121,3122,218],{"class":127},[121,3124,300],{"class":172},[121,3126,141],{"class":127},[121,3128,144],{"class":127},[121,3130,218],{"class":127},[121,3132,1029],{"class":221},[121,3134,141],{"class":127},[121,3136,2236],{"class":127},[121,3138,3139,3141,3143,3145,3147],{"class":123,"line":279},[121,3140,169],{"class":127},[121,3142,326],{"class":156},[121,3144,141],{"class":127},[121,3146,144],{"class":127},[121,3148,195],{"class":127},[121,3150,3151,3153,3155,3157,3159,3161,3163,3166,3168,3170,3172,3174,3176,3178,3180,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235,3237],{"class":123,"line":293},[121,3152,3050],{"class":127},[121,3154,218],{"class":127},[121,3156,211],{"class":172},[121,3158,141],{"class":127},[121,3160,144],{"class":127},[121,3162,218],{"class":127},[121,3164,3165],{"class":221},"api-1",[121,3167,141],{"class":127},[121,3169,2271],{"class":127},[121,3171,218],{"class":127},[121,3173,367],{"class":172},[121,3175,141],{"class":127},[121,3177,144],{"class":127},[121,3179,218],{"class":127},[121,3181,3182],{"class":221},"10.0.1.1",[121,3184,141],{"class":127},[121,3186,2271],{"class":127},[121,3188,218],{"class":127},[121,3190,388],{"class":172},[121,3192,141],{"class":127},[121,3194,144],{"class":127},[121,3196,395],{"class":172},[121,3198,2271],{"class":127},[121,3200,218],{"class":127},[121,3202,405],{"class":172},[121,3204,141],{"class":127},[121,3206,144],{"class":127},[121,3208,218],{"class":127},[121,3210,414],{"class":221},[121,3212,141],{"class":127},[121,3214,2271],{"class":127},[121,3216,218],{"class":127},[121,3218,426],{"class":172},[121,3220,141],{"class":127},[121,3222,144],{"class":127},[121,3224,433],{"class":172},[121,3226,2271],{"class":127},[121,3228,218],{"class":127},[121,3230,173],{"class":172},[121,3232,141],{"class":127},[121,3234,144],{"class":127},[121,3236,2338],{"class":127},[121,3238,2236],{"class":127},[121,3240,3241,3243,3245,3247,3249,3251,3253,3256,3258,3260,3262,3264,3266,3268,3270,3273,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327],{"class":123,"line":315},[121,3242,3050],{"class":127},[121,3244,218],{"class":127},[121,3246,211],{"class":172},[121,3248,141],{"class":127},[121,3250,144],{"class":127},[121,3252,218],{"class":127},[121,3254,3255],{"class":221},"api-2",[121,3257,141],{"class":127},[121,3259,2271],{"class":127},[121,3261,218],{"class":127},[121,3263,367],{"class":172},[121,3265,141],{"class":127},[121,3267,144],{"class":127},[121,3269,218],{"class":127},[121,3271,3272],{"class":221},"10.0.1.2",[121,3274,141],{"class":127},[121,3276,2271],{"class":127},[121,3278,218],{"class":127},[121,3280,388],{"class":172},[121,3282,141],{"class":127},[121,3284,144],{"class":127},[121,3286,395],{"class":172},[121,3288,2271],{"class":127},[121,3290,218],{"class":127},[121,3292,405],{"class":172},[121,3294,141],{"class":127},[121,3296,144],{"class":127},[121,3298,218],{"class":127},[121,3300,414],{"class":221},[121,3302,141],{"class":127},[121,3304,2271],{"class":127},[121,3306,218],{"class":127},[121,3308,426],{"class":172},[121,3310,141],{"class":127},[121,3312,144],{"class":127},[121,3314,433],{"class":172},[121,3316,2271],{"class":127},[121,3318,218],{"class":127},[121,3320,173],{"class":172},[121,3322,141],{"class":127},[121,3324,144],{"class":127},[121,3326,2338],{"class":127},[121,3328,2430],{"class":127},[121,3330,3331],{"class":123,"line":321},[121,3332,3108],{"class":127},[121,3334,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359],{"class":123,"line":335},[121,3336,169],{"class":127},[121,3338,634],{"class":156},[121,3340,141],{"class":127},[121,3342,144],{"class":127},[121,3344,2219],{"class":127},[121,3346,218],{"class":127},[121,3348,648],{"class":172},[121,3350,141],{"class":127},[121,3352,144],{"class":127},[121,3354,218],{"class":127},[121,3356,657],{"class":221},[121,3358,141],{"class":127},[121,3360,2236],{"class":127},[121,3362,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387],{"class":123,"line":341},[121,3364,169],{"class":127},[121,3366,672],{"class":156},[121,3368,141],{"class":127},[121,3370,144],{"class":127},[121,3372,2219],{"class":127},[121,3374,218],{"class":127},[121,3376,648],{"class":172},[121,3378,141],{"class":127},[121,3380,144],{"class":127},[121,3382,218],{"class":127},[121,3384,694],{"class":221},[121,3386,141],{"class":127},[121,3388,2430],{"class":127},[121,3390,3391],{"class":123,"line":362},[121,3392,3393],{"class":127},"    },\n",[121,3395,3396],{"class":123,"line":383},[121,3397,2983],{"class":127},[121,3399,3400,3402,3404,3406,3408,3410,3413,3415],{"class":123,"line":400},[121,3401,169],{"class":127},[121,3403,211],{"class":156},[121,3405,141],{"class":127},[121,3407,144],{"class":127},[121,3409,218],{"class":127},[121,3411,3412],{"class":221},"static-pool",[121,3414,141],{"class":127},[121,3416,227],{"class":127},[121,3418,3419,3421,3423,3425,3427,3429,3432,3434],{"class":123,"line":421},[121,3420,169],{"class":127},[121,3422,235],{"class":156},[121,3424,141],{"class":127},[121,3426,144],{"class":127},[121,3428,218],{"class":127},[121,3430,3431],{"class":221},"Static Servers",[121,3433,141],{"class":127},[121,3435,227],{"class":127},[121,3437,3438,3440,3442,3444,3446],{"class":123,"line":438},[121,3439,169],{"class":127},[121,3441,173],{"class":156},[121,3443,141],{"class":127},[121,3445,144],{"class":127},[121,3447,180],{"class":127},[121,3449,3450,3452,3454,3456,3458],{"class":123,"line":451},[121,3451,169],{"class":127},[121,3453,269],{"class":156},[121,3455,141],{"class":127},[121,3457,144],{"class":127},[121,3459,276],{"class":127},[121,3461,3462,3464,3466,3468,3470,3472,3474,3476,3478,3480,3482,3484,3486],{"class":123,"line":465},[121,3463,169],{"class":127},[121,3465,284],{"class":156},[121,3467,141],{"class":127},[121,3469,144],{"class":127},[121,3471,2219],{"class":127},[121,3473,218],{"class":127},[121,3475,300],{"class":172},[121,3477,141],{"class":127},[121,3479,144],{"class":127},[121,3481,218],{"class":127},[121,3483,309],{"class":221},[121,3485,141],{"class":127},[121,3487,2236],{"class":127},[121,3489,3490,3492,3494,3496,3498],{"class":123,"line":482},[121,3491,169],{"class":127},[121,3493,326],{"class":156},[121,3495,141],{"class":127},[121,3497,144],{"class":127},[121,3499,195],{"class":127},[121,3501,3502,3504,3506,3508,3510,3512,3514,3517,3519,3521,3523,3525,3527,3529,3531,3534,3536,3538,3540,3542,3544,3546,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583,3585,3587,3589],{"class":123,"line":497},[121,3503,3050],{"class":127},[121,3505,218],{"class":127},[121,3507,211],{"class":172},[121,3509,141],{"class":127},[121,3511,144],{"class":127},[121,3513,218],{"class":127},[121,3515,3516],{"class":221},"static-1",[121,3518,141],{"class":127},[121,3520,2271],{"class":127},[121,3522,218],{"class":127},[121,3524,367],{"class":172},[121,3526,141],{"class":127},[121,3528,144],{"class":127},[121,3530,218],{"class":127},[121,3532,3533],{"class":221},"10.0.2.1",[121,3535,141],{"class":127},[121,3537,2271],{"class":127},[121,3539,218],{"class":127},[121,3541,388],{"class":172},[121,3543,141],{"class":127},[121,3545,144],{"class":127},[121,3547,3548],{"class":172}," 80",[121,3550,2271],{"class":127},[121,3552,218],{"class":127},[121,3554,405],{"class":172},[121,3556,141],{"class":127},[121,3558,144],{"class":127},[121,3560,218],{"class":127},[121,3562,414],{"class":221},[121,3564,141],{"class":127},[121,3566,2271],{"class":127},[121,3568,218],{"class":127},[121,3570,426],{"class":172},[121,3572,141],{"class":127},[121,3574,144],{"class":127},[121,3576,433],{"class":172},[121,3578,2271],{"class":127},[121,3580,218],{"class":127},[121,3582,173],{"class":172},[121,3584,141],{"class":127},[121,3586,144],{"class":127},[121,3588,2338],{"class":127},[121,3590,2430],{"class":127},[121,3592,3593],{"class":123,"line":503},[121,3594,3108],{"class":127},[121,3596,3597,3599,3601,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621],{"class":123,"line":509},[121,3598,169],{"class":127},[121,3600,634],{"class":156},[121,3602,141],{"class":127},[121,3604,144],{"class":127},[121,3606,2219],{"class":127},[121,3608,218],{"class":127},[121,3610,648],{"class":172},[121,3612,141],{"class":127},[121,3614,144],{"class":127},[121,3616,218],{"class":127},[121,3618,657],{"class":221},[121,3620,141],{"class":127},[121,3622,2236],{"class":127},[121,3624,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649],{"class":123,"line":514},[121,3626,169],{"class":127},[121,3628,672],{"class":156},[121,3630,141],{"class":127},[121,3632,144],{"class":127},[121,3634,2219],{"class":127},[121,3636,218],{"class":127},[121,3638,648],{"class":172},[121,3640,141],{"class":127},[121,3642,144],{"class":127},[121,3644,218],{"class":127},[121,3646,694],{"class":221},[121,3648,141],{"class":127},[121,3650,2430],{"class":127},[121,3652,3653],{"class":123,"line":534},[121,3654,720],{"class":127},[121,3656,3657],{"class":123,"line":554},[121,3658,3659],{"class":127},"  ]\n",[121,3661,3662],{"class":123,"line":569},[121,3663,732],{"class":127},[882,3665,3667],{"id":3666},"sticky-sessions-by-cookie","Sticky sessions by cookie",[111,3669,3671],{"className":113,"code":3670,"language":115,"meta":116,"style":116},"{\n  \"id\": \"session-pool\",\n  \"name\": \"Session Servers\",\n  \"enabled\": true,\n  \"conditions\": [],\n  \"algorithm\": {\n    \"type\": \"sticky_session\",\n    \"key\": \"req.cookie.Session-ID\"\n  },\n  \"targets\": [\n    { \"id\": \"app-1\", \"host\": \"10.0.0.1\", \"port\": 8080, \"protocol\": \"http\", \"weight\": 100, \"enabled\": true },\n    { \"id\": \"app-2\", \"host\": \"10.0.0.2\", \"port\": 8080, \"protocol\": \"http\", \"weight\": 100, \"enabled\": true }\n  ],\n  \"host_header\": { \"mode\": \"visitor\" },\n  \"health_check\": { \"mode\": \"off\" }\n}\n",[118,3672,3673,3677,3696,3715,3727,3739,3751,3769,3785,3790,3802,3891,3980,3984,4012,4040],{"__ignoreMap":116},[121,3674,3675],{"class":123,"line":124},[121,3676,128],{"class":127},[121,3678,3679,3681,3683,3685,3687,3689,3692,3694],{"class":123,"line":131},[121,3680,134],{"class":127},[121,3682,211],{"class":137},[121,3684,141],{"class":127},[121,3686,144],{"class":127},[121,3688,218],{"class":127},[121,3690,3691],{"class":221},"session-pool",[121,3693,141],{"class":127},[121,3695,227],{"class":127},[121,3697,3698,3700,3702,3704,3706,3708,3711,3713],{"class":123,"line":150},[121,3699,134],{"class":127},[121,3701,235],{"class":137},[121,3703,141],{"class":127},[121,3705,144],{"class":127},[121,3707,218],{"class":127},[121,3709,3710],{"class":221},"Session Servers",[121,3712,141],{"class":127},[121,3714,227],{"class":127},[121,3716,3717,3719,3721,3723,3725],{"class":123,"line":166},[121,3718,134],{"class":127},[121,3720,173],{"class":137},[121,3722,141],{"class":127},[121,3724,144],{"class":127},[121,3726,180],{"class":127},[121,3728,3729,3731,3733,3735,3737],{"class":123,"line":183},[121,3730,134],{"class":127},[121,3732,269],{"class":137},[121,3734,141],{"class":127},[121,3736,144],{"class":127},[121,3738,276],{"class":127},[121,3740,3741,3743,3745,3747,3749],{"class":123,"line":198},[121,3742,134],{"class":127},[121,3744,284],{"class":137},[121,3746,141],{"class":127},[121,3748,144],{"class":127},[121,3750,147],{"class":127},[121,3752,3753,3755,3757,3759,3761,3763,3765,3767],{"class":123,"line":204},[121,3754,153],{"class":127},[121,3756,300],{"class":156},[121,3758,141],{"class":127},[121,3760,144],{"class":127},[121,3762,218],{"class":127},[121,3764,1135],{"class":221},[121,3766,141],{"class":127},[121,3768,227],{"class":127},[121,3770,3771,3773,3775,3777,3779,3781,3783],{"class":123,"line":230},[121,3772,153],{"class":127},[121,3774,1146],{"class":156},[121,3776,141],{"class":127},[121,3778,144],{"class":127},[121,3780,218],{"class":127},[121,3782,1215],{"class":221},[121,3784,312],{"class":127},[121,3786,3787],{"class":123,"line":251},[121,3788,3789],{"class":127},"  },\n",[121,3791,3792,3794,3796,3798,3800],{"class":123,"line":264},[121,3793,134],{"class":127},[121,3795,326],{"class":137},[121,3797,141],{"class":127},[121,3799,144],{"class":127},[121,3801,195],{"class":127},[121,3803,3804,3806,3808,3810,3812,3814,3816,3819,3821,3823,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889],{"class":123,"line":279},[121,3805,2253],{"class":127},[121,3807,218],{"class":127},[121,3809,211],{"class":156},[121,3811,141],{"class":127},[121,3813,144],{"class":127},[121,3815,218],{"class":127},[121,3817,3818],{"class":221},"app-1",[121,3820,141],{"class":127},[121,3822,2271],{"class":127},[121,3824,218],{"class":127},[121,3826,367],{"class":156},[121,3828,141],{"class":127},[121,3830,144],{"class":127},[121,3832,218],{"class":127},[121,3834,376],{"class":221},[121,3836,141],{"class":127},[121,3838,2271],{"class":127},[121,3840,218],{"class":127},[121,3842,388],{"class":156},[121,3844,141],{"class":127},[121,3846,144],{"class":127},[121,3848,395],{"class":172},[121,3850,2271],{"class":127},[121,3852,218],{"class":127},[121,3854,405],{"class":156},[121,3856,141],{"class":127},[121,3858,144],{"class":127},[121,3860,218],{"class":127},[121,3862,414],{"class":221},[121,3864,141],{"class":127},[121,3866,2271],{"class":127},[121,3868,218],{"class":127},[121,3870,426],{"class":156},[121,3872,141],{"class":127},[121,3874,144],{"class":127},[121,3876,433],{"class":172},[121,3878,2271],{"class":127},[121,3880,218],{"class":127},[121,3882,173],{"class":156},[121,3884,141],{"class":127},[121,3886,144],{"class":127},[121,3888,2338],{"class":127},[121,3890,2236],{"class":127},[121,3892,3893,3895,3897,3899,3901,3903,3905,3908,3910,3912,3914,3916,3918,3920,3922,3924,3926,3928,3930,3932,3934,3936,3938,3940,3942,3944,3946,3948,3950,3952,3954,3956,3958,3960,3962,3964,3966,3968,3970,3972,3974,3976,3978],{"class":123,"line":293},[121,3894,2253],{"class":127},[121,3896,218],{"class":127},[121,3898,211],{"class":156},[121,3900,141],{"class":127},[121,3902,144],{"class":127},[121,3904,218],{"class":127},[121,3906,3907],{"class":221},"app-2",[121,3909,141],{"class":127},[121,3911,2271],{"class":127},[121,3913,218],{"class":127},[121,3915,367],{"class":156},[121,3917,141],{"class":127},[121,3919,144],{"class":127},[121,3921,218],{"class":127},[121,3923,547],{"class":221},[121,3925,141],{"class":127},[121,3927,2271],{"class":127},[121,3929,218],{"class":127},[121,3931,388],{"class":156},[121,3933,141],{"class":127},[121,3935,144],{"class":127},[121,3937,395],{"class":172},[121,3939,2271],{"class":127},[121,3941,218],{"class":127},[121,3943,405],{"class":156},[121,3945,141],{"class":127},[121,3947,144],{"class":127},[121,3949,218],{"class":127},[121,3951,414],{"class":221},[121,3953,141],{"class":127},[121,3955,2271],{"class":127},[121,3957,218],{"class":127},[121,3959,426],{"class":156},[121,3961,141],{"class":127},[121,3963,144],{"class":127},[121,3965,433],{"class":172},[121,3967,2271],{"class":127},[121,3969,218],{"class":127},[121,3971,173],{"class":156},[121,3973,141],{"class":127},[121,3975,144],{"class":127},[121,3977,2338],{"class":127},[121,3979,2430],{"class":127},[121,3981,3982],{"class":123,"line":315},[121,3983,2435],{"class":127},[121,3985,3986,3988,3990,3992,3994,3996,3998,4000,4002,4004,4006,4008,4010],{"class":123,"line":321},[121,3987,134],{"class":127},[121,3989,634],{"class":137},[121,3991,141],{"class":127},[121,3993,144],{"class":127},[121,3995,2219],{"class":127},[121,3997,218],{"class":127},[121,3999,648],{"class":156},[121,4001,141],{"class":127},[121,4003,144],{"class":127},[121,4005,218],{"class":127},[121,4007,657],{"class":221},[121,4009,141],{"class":127},[121,4011,2236],{"class":127},[121,4013,4014,4016,4018,4020,4022,4024,4026,4028,4030,4032,4034,4036,4038],{"class":123,"line":335},[121,4015,134],{"class":127},[121,4017,672],{"class":137},[121,4019,141],{"class":127},[121,4021,144],{"class":127},[121,4023,2219],{"class":127},[121,4025,218],{"class":127},[121,4027,648],{"class":156},[121,4029,141],{"class":127},[121,4031,144],{"class":127},[121,4033,218],{"class":127},[121,4035,694],{"class":221},[121,4037,141],{"class":127},[121,4039,2430],{"class":127},[121,4041,4042],{"class":123,"line":341},[121,4043,732],{"class":127},[882,4045,4047],{"id":4046},"https-upstream-with-tls-verification","HTTPS upstream with TLS verification",[111,4049,4051],{"className":113,"code":4050,"language":115,"meta":116,"style":116},"{\n  \"id\": \"secure-pool\",\n  \"name\": \"Secure Backend\",\n  \"enabled\": true,\n  \"conditions\": [],\n  \"algorithm\": { \"type\": \"round_robin\" },\n  \"targets\": [\n    {\n      \"id\": \"secure-1\",\n      \"host\": \"backend.internal\",\n      \"port\": 443,\n      \"protocol\": \"https\",\n      \"weight\": 100,\n      \"enabled\": true,\n      \"tls\": {\n        \"verify\": true,\n        \"sni\": \"api.example.com\"\n      }\n    }\n  ],\n  \"host_header\": { \"mode\": \"target\" },\n  \"health_check\": { \"mode\": \"off\" }\n}\n",[118,4052,4053,4057,4076,4095,4107,4119,4147,4159,4163,4182,4200,4214,4232,4246,4258,4270,4283,4299,4304,4308,4312,4340,4368],{"__ignoreMap":116},[121,4054,4055],{"class":123,"line":124},[121,4056,128],{"class":127},[121,4058,4059,4061,4063,4065,4067,4069,4072,4074],{"class":123,"line":131},[121,4060,134],{"class":127},[121,4062,211],{"class":137},[121,4064,141],{"class":127},[121,4066,144],{"class":127},[121,4068,218],{"class":127},[121,4070,4071],{"class":221},"secure-pool",[121,4073,141],{"class":127},[121,4075,227],{"class":127},[121,4077,4078,4080,4082,4084,4086,4088,4091,4093],{"class":123,"line":150},[121,4079,134],{"class":127},[121,4081,235],{"class":137},[121,4083,141],{"class":127},[121,4085,144],{"class":127},[121,4087,218],{"class":127},[121,4089,4090],{"class":221},"Secure Backend",[121,4092,141],{"class":127},[121,4094,227],{"class":127},[121,4096,4097,4099,4101,4103,4105],{"class":123,"line":166},[121,4098,134],{"class":127},[121,4100,173],{"class":137},[121,4102,141],{"class":127},[121,4104,144],{"class":127},[121,4106,180],{"class":127},[121,4108,4109,4111,4113,4115,4117],{"class":123,"line":183},[121,4110,134],{"class":127},[121,4112,269],{"class":137},[121,4114,141],{"class":127},[121,4116,144],{"class":127},[121,4118,276],{"class":127},[121,4120,4121,4123,4125,4127,4129,4131,4133,4135,4137,4139,4141,4143,4145],{"class":123,"line":198},[121,4122,134],{"class":127},[121,4124,284],{"class":137},[121,4126,141],{"class":127},[121,4128,144],{"class":127},[121,4130,2219],{"class":127},[121,4132,218],{"class":127},[121,4134,300],{"class":156},[121,4136,141],{"class":127},[121,4138,144],{"class":127},[121,4140,218],{"class":127},[121,4142,309],{"class":221},[121,4144,141],{"class":127},[121,4146,2236],{"class":127},[121,4148,4149,4151,4153,4155,4157],{"class":123,"line":204},[121,4150,134],{"class":127},[121,4152,326],{"class":137},[121,4154,141],{"class":127},[121,4156,144],{"class":127},[121,4158,195],{"class":127},[121,4160,4161],{"class":123,"line":230},[121,4162,2983],{"class":127},[121,4164,4165,4167,4169,4171,4173,4175,4178,4180],{"class":123,"line":251},[121,4166,169],{"class":127},[121,4168,211],{"class":156},[121,4170,141],{"class":127},[121,4172,144],{"class":127},[121,4174,218],{"class":127},[121,4176,4177],{"class":221},"secure-1",[121,4179,141],{"class":127},[121,4181,227],{"class":127},[121,4183,4184,4186,4188,4190,4192,4194,4196,4198],{"class":123,"line":264},[121,4185,169],{"class":127},[121,4187,367],{"class":156},[121,4189,141],{"class":127},[121,4191,144],{"class":127},[121,4193,218],{"class":127},[121,4195,1418],{"class":221},[121,4197,141],{"class":127},[121,4199,227],{"class":127},[121,4201,4202,4204,4206,4208,4210,4212],{"class":123,"line":279},[121,4203,169],{"class":127},[121,4205,388],{"class":156},[121,4207,141],{"class":127},[121,4209,144],{"class":127},[121,4211,1435],{"class":172},[121,4213,227],{"class":127},[121,4215,4216,4218,4220,4222,4224,4226,4228,4230],{"class":123,"line":293},[121,4217,169],{"class":127},[121,4219,405],{"class":156},[121,4221,141],{"class":127},[121,4223,144],{"class":127},[121,4225,218],{"class":127},[121,4227,1452],{"class":221},[121,4229,141],{"class":127},[121,4231,227],{"class":127},[121,4233,4234,4236,4238,4240,4242,4244],{"class":123,"line":315},[121,4235,169],{"class":127},[121,4237,426],{"class":156},[121,4239,141],{"class":127},[121,4241,144],{"class":127},[121,4243,433],{"class":172},[121,4245,227],{"class":127},[121,4247,4248,4250,4252,4254,4256],{"class":123,"line":321},[121,4249,169],{"class":127},[121,4251,173],{"class":156},[121,4253,141],{"class":127},[121,4255,144],{"class":127},[121,4257,180],{"class":127},[121,4259,4260,4262,4264,4266,4268],{"class":123,"line":335},[121,4261,169],{"class":127},[121,4263,456],{"class":156},[121,4265,141],{"class":127},[121,4267,144],{"class":127},[121,4269,147],{"class":127},[121,4271,4272,4275,4277,4279,4281],{"class":123,"line":341},[121,4273,4274],{"class":127},"        \"",[121,4276,472],{"class":172},[121,4278,141],{"class":127},[121,4280,144],{"class":127},[121,4282,180],{"class":127},[121,4284,4285,4287,4289,4291,4293,4295,4297],{"class":123,"line":362},[121,4286,4274],{"class":127},[121,4288,487],{"class":172},[121,4290,141],{"class":127},[121,4292,144],{"class":127},[121,4294,218],{"class":127},[121,4296,1521],{"class":221},[121,4298,312],{"class":127},[121,4300,4301],{"class":123,"line":383},[121,4302,4303],{"class":127},"      }\n",[121,4305,4306],{"class":123,"line":400},[121,4307,720],{"class":127},[121,4309,4310],{"class":123,"line":421},[121,4311,2435],{"class":127},[121,4313,4314,4316,4318,4320,4322,4324,4326,4328,4330,4332,4334,4336,4338],{"class":123,"line":438},[121,4315,134],{"class":127},[121,4317,634],{"class":137},[121,4319,141],{"class":127},[121,4321,144],{"class":127},[121,4323,2219],{"class":127},[121,4325,218],{"class":127},[121,4327,648],{"class":156},[121,4329,141],{"class":127},[121,4331,144],{"class":127},[121,4333,218],{"class":127},[121,4335,1602],{"class":221},[121,4337,141],{"class":127},[121,4339,2236],{"class":127},[121,4341,4342,4344,4346,4348,4350,4352,4354,4356,4358,4360,4362,4364,4366],{"class":123,"line":451},[121,4343,134],{"class":127},[121,4345,672],{"class":137},[121,4347,141],{"class":127},[121,4349,144],{"class":127},[121,4351,2219],{"class":127},[121,4353,218],{"class":127},[121,4355,648],{"class":156},[121,4357,141],{"class":127},[121,4359,144],{"class":127},[121,4361,218],{"class":127},[121,4363,694],{"class":221},[121,4365,141],{"class":127},[121,4367,2430],{"class":127},[121,4369,4370],{"class":123,"line":465},[121,4371,732],{"class":127},[106,4373,4375],{"id":4374},"upstream-headers","Upstream headers",[102,4377,4378],{},"The gateway adds these headers to upstream requests:",[738,4380,4381,4391],{},[741,4382,4383],{},[744,4384,4385,4388],{},[747,4386,4387],{},"Header",[747,4389,4390],{},"Value",[760,4392,4393,4403,4413],{},[744,4394,4395,4400],{},[765,4396,4397],{},[118,4398,4399],{},"X-Forwarded-Proto",[765,4401,4402],{},"Original request scheme",[744,4404,4405,4410],{},[765,4406,4407],{},[118,4408,4409],{},"X-Forwarded-Host",[765,4411,4412],{},"Original request host",[744,4414,4415,4420],{},[765,4416,4417],{},[118,4418,4419],{},"X-Forwarded-For",[765,4421,4422],{},"Client IP (appended to existing)",[106,4424,4426],{"id":4425},"log-output","Log output",[111,4428,4430],{"className":113,"code":4429,"language":115,"meta":116,"style":116},"{\n  \"load_balancer\": {\n    \"lb_id\": \"default\",\n    \"algorithm\": \"RoundRobin\",\n    \"target_id\": \"backend-1\",\n    \"target\": \"10.0.0.1\"\n  }\n}\n",[118,4431,4432,4436,4448,4467,4486,4505,4521,4525],{"__ignoreMap":116},[121,4433,4434],{"class":123,"line":124},[121,4435,128],{"class":127},[121,4437,4438,4440,4442,4444,4446],{"class":123,"line":131},[121,4439,134],{"class":127},[121,4441,157],{"class":137},[121,4443,141],{"class":127},[121,4445,144],{"class":127},[121,4447,147],{"class":127},[121,4449,4450,4452,4455,4457,4459,4461,4463,4465],{"class":123,"line":150},[121,4451,153],{"class":127},[121,4453,4454],{"class":156},"lb_id",[121,4456,141],{"class":127},[121,4458,144],{"class":127},[121,4460,218],{"class":127},[121,4462,222],{"class":221},[121,4464,141],{"class":127},[121,4466,227],{"class":127},[121,4468,4469,4471,4473,4475,4477,4479,4482,4484],{"class":123,"line":166},[121,4470,153],{"class":127},[121,4472,284],{"class":156},[121,4474,141],{"class":127},[121,4476,144],{"class":127},[121,4478,218],{"class":127},[121,4480,4481],{"class":221},"RoundRobin",[121,4483,141],{"class":127},[121,4485,227],{"class":127},[121,4487,4488,4490,4493,4495,4497,4499,4501,4503],{"class":123,"line":183},[121,4489,153],{"class":127},[121,4491,4492],{"class":156},"target_id",[121,4494,141],{"class":127},[121,4496,144],{"class":127},[121,4498,218],{"class":127},[121,4500,355],{"class":221},[121,4502,141],{"class":127},[121,4504,227],{"class":127},[121,4506,4507,4509,4511,4513,4515,4517,4519],{"class":123,"line":198},[121,4508,153],{"class":127},[121,4510,1602],{"class":156},[121,4512,141],{"class":127},[121,4514,144],{"class":127},[121,4516,218],{"class":127},[121,4518,376],{"class":221},[121,4520,312],{"class":127},[121,4522,4523],{"class":123,"line":204},[121,4524,726],{"class":127},[121,4526,4527],{"class":123,"line":230},[121,4528,732],{"class":127},[106,4530,4532],{"id":4531},"performance","Performance",[738,4534,4535,4544],{},[741,4536,4537],{},[744,4538,4539,4542],{},[747,4540,4541],{},"Metric",[747,4543,4390],{},[760,4545,4546,4554,4562,4570],{},[744,4547,4548,4551],{},[765,4549,4550],{},"Target selection",[765,4552,4553],{},"O(n) where n = targets",[744,4555,4556,4559],{},[765,4557,4558],{},"Connection tracking",[765,4560,4561],{},"Atomic counters",[744,4563,4564,4567],{},[765,4565,4566],{},"Latency tracking",[765,4568,4569],{},"EWMA (lock-free)",[744,4571,4572,4575],{},[765,4573,4574],{},"Sticky session hash",[765,4576,4577],{},"SHA-256",[106,4579,4581],{"id":4580},"notes","Notes",[1539,4583,4584,4587,4590,4593,4596],{},[1542,4585,4586],{},"Multiple load balancers are evaluated in order — first match wins",[1542,4588,4589],{},"If no load balancer matches, the request has no upstream target (will fail)",[1542,4591,4592],{},"Connection counts are per-gateway-instance (not distributed)",[1542,4594,4595],{},"Health checks run in a background task (when enabled)",[1542,4597,4598,4599,4602,4603],{},"If every target is unhealthy the gateway returns ",[118,4600,4601],{},"503"," with ",[118,4604,4605],{},"{\"error\": \"no_healthy_upstream\"}",[4607,4608,4609],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .su27w, html code.shiki .su27w{--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":116,"searchDepth":131,"depth":131,"links":4611},[4612,4613,4614,4621,4624,4625,4630,4631,4638,4639,4640,4641],{"id":108,"depth":131,"text":109},{"id":735,"depth":131,"text":736},{"id":879,"depth":131,"text":880,"children":4615},[4616,4617,4618,4619,4620],{"id":884,"depth":150,"text":885},{"id":936,"depth":150,"text":937},{"id":989,"depth":150,"text":990},{"id":1042,"depth":150,"text":1043},{"id":1095,"depth":150,"text":1096},{"id":326,"depth":131,"text":1231,"children":4622},[4623],{"id":1374,"depth":150,"text":1375},{"id":1554,"depth":131,"text":1555},{"id":1673,"depth":131,"text":1674,"children":4626},[4627,4628,4629],{"id":1677,"depth":150,"text":1678},{"id":1729,"depth":150,"text":1730},{"id":2038,"depth":150,"text":2039},{"id":2119,"depth":131,"text":2120},{"id":2131,"depth":131,"text":2132,"children":4632},[4633,4634,4635,4636,4637],{"id":2135,"depth":150,"text":2136},{"id":2498,"depth":150,"text":2499},{"id":2956,"depth":150,"text":2957},{"id":3666,"depth":150,"text":3667},{"id":4046,"depth":150,"text":4047},{"id":4374,"depth":131,"text":4375},{"id":4425,"depth":131,"text":4426},{"id":4531,"depth":131,"text":4532},{"id":4580,"depth":131,"text":4581},"Upstream routing with round-robin, weighted, least-connections, fast-response, and sticky session algorithms.","md",null,{},{"icon":62},{"title":59,"description":4642},"049W3ha0AM1MHClmZg6TgJGkQ4a89lMmjfOJAMcUqaE",[4650,4652],{"title":54,"path":55,"stem":56,"description":4651,"icon":57,"children":-1},"Edge caching with TTL, custom keys, stale-while-revalidate, stale-if-error, and singleflight revalidation.",{"title":64,"path":65,"stem":66,"description":4653,"icon":67,"children":-1},"On-demand TLS certificate provisioning via Let's Encrypt ACME (HTTP-01) with in-memory cert state.",1791649767383]