در فیلد upstreams می‌توانید اطلاعات مربوط به سرورهایی را که پشت CDN قرار می‌گیرند، وارد کنید. هر upstream نیاز به یک نام غیرتکراری دارد تا بتوان به آن در تنظیمات فیلد location ارجاع داد.

ValueTypeUpstream
Max Length: 64 charactersstringname
http | httpsstring enumscheme
objecthc
objecthc2
1 | 2intpreferredHealthCheckVersion
host header for requests to upstreamstringhostHeader
immutablestringquickcdnIntegrity
array of objectsservers
True | FalseboolsmartRouting
intpassiveThreshold
objectloadBalancer

نکته

مقدار فیلد quickcdnIntegrity توسط کاربر قابل تغییر نیست و در صورتی که مقدار داشته باشد تغییر آدرس آپستریم از طریق CDN ممکن نخواهد بود. برای تغییر سرورهای آپستریم رکوردهای DNS را آپدیت کنید.

برای هر سروری که پشت CDN قرار می‌گیرد لازم است مقادیر host و port آن سرور برای ایجاد ارتباط سرورهای لبه با آن وارد شود. همچنین می‌توانید برای یک Upstream چند سرور تعریف کنید و با استفاده از weight ترافیک را با وزن مشخص بین سرورها تقسیم کنید.

ValueTypeupstream.servers
RFC 1123stringhost
1-65535int32port
>= 0int32weight
True | Falseboolpassive

نکته

سرورهایی که مقدار passive آنها True باشد تنها در حالتی ترافیک دریافت می‌کنند که تعداد سرورهای آپستریم غیرقابل دسترس از passiveThreshold (تعیین شده در جدول اول) بیشتر باشد.

ValueTypeupstream.hc
Max Length: 128 charactersstringpath
ValueTypeupstream.hc2
http | tcpstringprotocol
Max: 10intdownThreshold
Max: 120inttimeoutSeconds
Max Length: 2048 charactersstringhttp.uri
host header set in health check requestsstringhttp.hostHeader
در فیلد loadBalancer می توانید الگوریتم توزیع بار را پیکربندی کنید.
ValueTypeupstream.loadBalancer
hash | wrrstringstrategy
ip | headerstringhashType
lower_snake_case header names[]stringheaders

مثال از پیکربندی loadBalancer برای فعال سازی الگوریتم Consistent Hashing بر اساس ریموت آی پی کاربر:

loadBalancer: hashType: ip strategy: hash

مثال از پیکربندی loadBalancer برای فعال سازی الگوریتم Consistent Hashing بر اساس هدر های ارسالی از سمت کاربر:

loadBalancer: hashType: header strategy: hash headers: - user_agent - host