diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 877a049eef940b3..c244c2e4df5aa34 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -175,6 +175,7 @@ /src/content/docs/cache/ @angelampcosta @cloudflare/pcx-technical-writing /src/content/docs/health-checks/ @angelampcosta @cloudflare/pcx-technical-writing /src/content/docs/load-balancing/ @angelampcosta @cloudflare/pcx-technical-writing +src/content/docs/smart-shield/ @RebeccaTamachiro @cloudflare/pcx-technical-writing /src/content/docs/spectrum/ @angelampcosta @cloudflare/pcx-technical-writing /src/content/docs/speed/ @angelampcosta @cloudflare/pcx-technical-writing /src/content/docs/web3/ @cloudflare/pcx-technical-writing diff --git a/src/assets/images/smart-shield/network-diagram.png b/src/assets/images/smart-shield/network-diagram.png new file mode 100644 index 000000000000000..5a597d977cb95f3 Binary files /dev/null and b/src/assets/images/smart-shield/network-diagram.png differ diff --git a/src/content/docs/aegis/about/reuse-and-coalescing.mdx b/src/content/docs/aegis/about/reuse-and-coalescing.mdx index 1e05f3d8553308e..d4c6ba2affc633b 100644 --- a/src/content/docs/aegis/about/reuse-and-coalescing.mdx +++ b/src/content/docs/aegis/about/reuse-and-coalescing.mdx @@ -6,21 +6,11 @@ sidebar: label: Reuse and coalescing --- -import { Details } from "~/components"; +import { Render } from "~/components"; Aside from [concurrent connections](/aegis/about/ips-allocation/#connections-to-your-origin)[^1], connection reuse and connection coalescing are also important concepts. They both have impact on latency and are considered when allocating your Aegis IPv4 addresses. -Implemented by HTTP/1.1, connection reuse describes multiple requests passing through one same connection (between one source IP:port and one destination IP:port). It is commonly the case even for simple websites nowadays. - -
-When a connection is initiated for `shop.example.com`, several embedded subresources may be requested - CSS, image files, advertisement, etc. This can mean hundreds of requests just for the website to load. Instead of having a one to one ratio of request per connection, a single connection is used for multiple requests. -
- -With HTTP/2, requests can use the same connection even if they are for different domains. - -
-A connection initiated for `shop.example.com` can be used for requests for `blog.example.com` as well - as long as the requests have the same destination IP:port and the server TLS certificate is authoritative for both hostnames. -
+ Refer to the [Cloudflare blog post](https://blog.cloudflare.com/aegis-deep-dive/) for further details. diff --git a/src/content/docs/argo-smart-routing/analytics.mdx b/src/content/docs/argo-smart-routing/analytics.mdx index 7e0bbc210f0723f..fd6e741384e9116 100644 --- a/src/content/docs/argo-smart-routing/analytics.mdx +++ b/src/content/docs/argo-smart-routing/analytics.mdx @@ -6,13 +6,15 @@ sidebar: --- +import { Render } from "~/components"; + Cloudflare provides analytics to show the performance benefits of Argo Smart Routing. You can access Argo analytics for your domain in the [Cloudflare dashboard](https://dash.cloudflare.com/) at **Analytics** > **Performance**. For information on all analytics in the dashboard, refer to [Analytics](/analytics/). ## How it works -Analytics collects data based on the time-to-first-byte (TTFB) from your origin to the Cloudflare network. TTFB is the delay between when Cloudflare sends a request to your server and when it receives the first byte in response. Argo Smart Routing optimizes your server's network transit time to minimize this delay. + :::note diff --git a/src/content/docs/argo-smart-routing/index.mdx b/src/content/docs/argo-smart-routing/index.mdx index d3e64d2e2aba050..1de059c591af43e 100644 --- a/src/content/docs/argo-smart-routing/index.mdx +++ b/src/content/docs/argo-smart-routing/index.mdx @@ -13,12 +13,18 @@ import { CardGrid, Description, Feature, LinkTitleCard, Plan, RelatedProduct, Re -Speed up your global traffic with a single click +Speed up your global traffic with a single click -Argo Smart Routing detects real-time network issues and routes your web traffic across the most efficient network path, avoiding congestion. This results in faster loading times, increased reliability, and reduced costs. These benefits are most apparent for users farthest from your origin server. + Learn more about the [benefits of Argo Smart Routing](https://www.cloudflare.com/application-services/products/argo-smart-routing/). @@ -40,15 +46,15 @@ Argo Smart Routing includes comprehensive analytics to compare performance impro ## Related products -Increase cache hit ratios to reduce requests to your origin server. +Increase cache hit ratios to reduce requests to your origin server. -Improve security and performance within mainland China. +Improve security and performance within mainland China. -Reduce latency and protect from DDoS attacks using the Cloudflare network. +Reduce latency and protect from DDoS attacks using the Cloudflare network. *** diff --git a/src/content/docs/cache/advanced-configuration/cache-reserve.mdx b/src/content/docs/cache/advanced-configuration/cache-reserve.mdx index 8de487c005bb650..1bedf26e24ea85f 100644 --- a/src/content/docs/cache/advanced-configuration/cache-reserve.mdx +++ b/src/content/docs/cache/advanced-configuration/cache-reserve.mdx @@ -5,7 +5,7 @@ pcx_content_type: concept import { Render, TabItem, Tabs, APIRequest } from "~/components"; -Cache Reserve is a large, persistent data store [implemented on top of R2](/r2/). By pushing a single button in the dashboard, your website’s cacheable content will be written to Cache Reserve. In the same way that [Tiered Cache](/cache/how-to/tiered-cache/) builds a hierarchy of caches between your visitors and your origin, Cache Reserve serves as the ultimate [upper-tier cache](/cache/how-to/tiered-cache/) that will reserve storage space for your assets for as long as you want. This ensures that your content is served from cache longer, shielding your origin from unneeded egress fees. + ![Content served from origin and getting cached in Cache Reserve, and Edge Cache Data Centers (T1=upper-tier, T2=lower-tier) on its way back to the client](~/assets/images/cache/content-being-served.png) @@ -41,21 +41,11 @@ If you are an Enterprise customer and are interested in Cache Reserve, contact y ## Cache Reserve asset eligibility -Not all assets are eligible for Cache Reserve. To be admitted into Cache Reserve, assets must: - -- Be cacheable, according to Cloudflare's standard [cacheability factors](/cache), -- Have a freshness time-to-live (TTL) of at least 10 hours (set by any means such as Cache-Control / [CDN-Cache-Control](/cache/concepts/cache-control/) origin response headers, [Edge Cache TTL](/cache/how-to/edge-browser-cache-ttl/#edge-cache-ttl), [Cache TTL By Status](/cache/how-to/configure-cache-status-code/), or [Cache Rules](/cache/how-to/cache-rules/)), -- Have a Content-Length response header. -- When using [Image transformations](/images/manage-images/create-variants/), original files are eligible for Cache Reserve, but resized file variants are not eligible because transformations happen after Cache Reserve in the response flow. + ## Limits -- Cache Reserve file limits are the same as [R2 limits](/r2/platform/limits/). Note that [CDN cache limits](/cache/concepts/default-cache-behavior/#customization-options-and-limits) still apply. Assets larger than standard limits will not be stored in the standard CDN cache, so these assets will incur Cache Reserve operations costs far more frequently. -- Origin Range requests are not supported at this time from Cache Reserve. -- [Vary for images](/cache/advanced-configuration/vary-for-images/) is currently not compatible with Cache Reserve. -- Requests to [R2 public buckets linked to a zone's domain](/r2/buckets/public-buckets/) will not use Cache Reserve. Enabling Cache Reserve for the connected zone will use Cache Reserve only for requests not destined for the R2 bucket. -- Cache Reserve makes requests for uncompressed content directly from the origin. Unlike the standard Cloudflare CDN, Cache Reserve does not include the `Accept-Encoding: gzip` header when sending requests to the origin. -- Cache Reserve is bypassed when using the Cloudflare [O2O](/cloudflare-for-platforms/cloudflare-for-saas/saas-customers/how-it-works/) setup. + ## Usage @@ -108,27 +98,10 @@ For example: ### Operations -Operations are performed by Cache Reserve on behalf of the user to write data from the origin to Cache Reserve and to pass that data downstream to other parts of Cloudflare’s network. These operations are managed internally by Cloudflare. - -#### Class A operations (writes) - -Class A operations are performed based on cache misses from Cloudflare’s CDN. When a request cannot be served from cache, it will be fetched from the origin and written to cache reserve as well as our edge caches on the way back to the visitor. - -#### Class B operations (reads) - -Class B operations are performed when data needs to be fetched from Cache Reserve to respond to a miss in the edge cache. - -#### Purge - -Asset purges are free operations. - -Cache Reserve will be instantly purged along with edge cache when you send a purge by URL request. - -Other purge methods, such as purge by tag, host, prefix, or purge everything will force an attempt to [revalidate](/cache/concepts/cache-responses/#revalidated) on the subsequent request for the Cache Reserve asset. Note that assets purged this way will still incur storage costs until their retention TTL expires. - -:::note -Note this differs from the standard CDN's purge by tag, host, or prefix features which force a cache miss, requiring the origin to deliver the asset in full. -::: + ## Cache Reserve billing examples @@ -171,16 +144,13 @@ Cache Reserve should be used with [Tiered Cache](/cache/how-to/tiered-cache/) en ## Cache Reserve Analytics -Cache Reserve Analytics provides insights regarding your Cache Reserve usage. It allows you to check what content is stored in Cache Reserve, how often it is being accessed, how long it has been there and how much egress from your origin it is saving you. - -In the **Overview** section, under **Cache Reserve**, you have access to the following metrics: - -- **Egress savings (bandwidth)** - is an estimation based on response bytes served from Cache Reserve that did not need to be served from your origin server. These are represented as cache hits. -- **Requests served by Cache Reserve** - is the number of requests served by Cache Reserve (total). -- **Data storage summary** - is based on a representative sample of requests. Refer to [Sampling](/analytics/graphql-api/sampling/) for more details about how Cloudflare samples data. - - **Current data stored** - is the data stored (currently) over time. - - **Aggregate storage usage** - is the total of storage used for the selected timestamp. -- **Operations** - [Class A](/cache/advanced-configuration/cache-reserve/#class-a-operations-writes) (writes) and [Class B](/cache/advanced-configuration/cache-reserve/#class-b-operations-reads) (reads) operations over time. + ## Cache Reserve clear button diff --git a/src/content/docs/cache/how-to/tiered-cache.mdx b/src/content/docs/cache/how-to/tiered-cache.mdx index 117db25baaf67c3..4777db6adf882b8 100644 --- a/src/content/docs/cache/how-to/tiered-cache.mdx +++ b/src/content/docs/cache/how-to/tiered-cache.mdx @@ -4,7 +4,7 @@ pcx_content_type: concept --- -import { Details, FeatureTable, APIRequest } from "~/components"; +import { Details, FeatureTable, APIRequest, Render } from "~/components"; Tiered Cache uses the size of Cloudflare’s network to reduce requests to customer origins by dramatically increasing cache hit ratios. With data centers around the world, Cloudflare caches content very close to end users. However, if a piece of content is not in cache, the Cloudflare edge data centers must contact the origin server to receive the cacheable content. @@ -20,19 +20,7 @@ Cloudflare allows you to select your cache topology so that you have control ove ### Smart Tiered Cache -Smart Tiered Cache dynamically selects the single closest upper tier for each of your website’s origins with no configuration required, using our in-house performance and routing data. Cloudflare collects latency data for each request to an origin, and uses the latency data to determine how well any upper-tier data center is connected with an origin. As a result, Cloudflare can select the data center with the lowest latency to be the upper-tier for an origin. - -#### Load Balancing interaction - -While Smart Tiered Cache selects one Upper Tier per origin, when using Load Balancing, Smart Tiered Cache will select the single best Upper Tier for the entire Load Balancing Pool. - -#### Caveats - -Smart Tiered Cache does not work when an origin is behind an [anycast](https://www.cloudflare.com/en-gb/learning/cdn/glossary/anycast-network/) or a regional unicast network because that will prevent us from knowing where the origin is located. As a result, we are unable to select the optimal upper tier and latency may be negatively impacted. - -You need to be careful when updating your origin IPs/DNS records while Smart Tiered Cache is enabled. Depending on the changes made, it may cause the existing assigned upper tiers to change, resulting in an increased `MISS` rate as cache is refilled in the new upper tiers. If the origin is switched to a network behind anycast, it will significantly reduce the effectiveness of Smart Tiered Cache. - -If you need to use anycast or regional unicast and want to use Smart Tiered cache, please engage your account team. + ### Generic Global Tiered Cache @@ -40,9 +28,9 @@ Generic Global topology allows for all of Cloudflare’s global data centers to ### Regional Tiered Cache -Regional Tiered Cache provides an additional layer of caching for Enterprise customers who have a global traffic footprint and want to serve content faster by avoiding network latency when there is a cache `MISS` in a lower-tier, resulting in an upper-tier fetch in a data center located far away. + -Regional Cache instructs Cloudflare to check a regional hub data center near the lower tier before going to the upper tier that may be outside of the region. This can help improve performance for **Smart** and **Custom Tiered Cache** topologies with upper-tiers in one or two regions. Regional Tiered Cache is not beneficial for customers with many upper tiers in many regions like Generic Global Tiered Cache. +This can help improve performance for **Smart** and **Custom Tiered Cache** topologies with upper-tiers in one or two regions. Regional Tiered Cache is not beneficial for customers with many upper tiers in many regions like Generic Global Tiered Cache. ### Custom Tiered Cache diff --git a/src/content/docs/health-checks/concepts/health-checks-regions.mdx b/src/content/docs/health-checks/concepts/health-checks-regions.mdx index ad7089f09324eb3..0606501f26856da 100644 --- a/src/content/docs/health-checks/concepts/health-checks-regions.mdx +++ b/src/content/docs/health-checks/concepts/health-checks-regions.mdx @@ -6,16 +6,6 @@ sidebar: --- -Cloudflare has data centers in [hundreds of cities worldwide](https://www.cloudflare.com/network/). Health checks do not run from every single of these data centers as this would result in numerous requests to your servers. Instead, you are able to choose between one and thirteen regions from which to run health checks. Cloudflare will run Health Checks from three data centers in each region that you select. +import { Render } from "~/components"; -:::note - - -The exact location of these data centers are subject to change at any moment. - - -::: - -The Internet is not the same everywhere around the world and your users may not have the same experience on your application according to where they are. Running Health Checks from different regions lets you know the health of your application from the point of view of the Cloudflare network in each of these regions. - -If you select multiple regions or choose **All Regions** (Business & Enterprise Only), you may increase traffic to your servers. Each region sends individual health checks from three data centers. + diff --git a/src/content/docs/health-checks/get-started.mdx b/src/content/docs/health-checks/get-started.mdx index e86ff33a8461f4c..9a288c4630743c8 100644 --- a/src/content/docs/health-checks/get-started.mdx +++ b/src/content/docs/health-checks/get-started.mdx @@ -6,6 +6,8 @@ sidebar: --- +import { Render } from "~/components"; + This guide will get you started with creating and managing configured Health Checks. ## Create a Health Check diff --git a/src/content/docs/health-checks/health-checks-analytics.mdx b/src/content/docs/health-checks/health-checks-analytics.mdx index 384452cb8ac1410..1fbc7fcafd480cc 100644 --- a/src/content/docs/health-checks/health-checks-analytics.mdx +++ b/src/content/docs/health-checks/health-checks-analytics.mdx @@ -15,14 +15,7 @@ To access health check analytics: 1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account and domain. 2. Go to **Traffic** > **Health Check Analytics**. -You can evaluate origin uptime, latency, failure reason, and specific event logs: - -* **Health Checks By Uptime**: Shows the percentage of uptime for individual origins over time. -* **Health Checks By Failure Reason**: Shows a breakdown of failures by the specific reason. See [common error code causes and solutions below](/health-checks/health-checks-analytics/#common-error-codes). -* **Health Checks By Latency**: Shows average latency – measured in round trip time — for individual origins over time. -* **Event Log**: Shows individual health check data. - * Select each record for additional details on **Round trip time**, the **Failure Reason**, the **Average Waterfall** (showing chronological data about request stages), **Response status code**, and more. - * Note that **Global** is not a configured region; it represents the aggregated data from all enabled regions. + ## Set up alerts @@ -31,188 +24,3 @@ You can configure alerts to notify you of any changes in your health check statu - -## Common error codes - -### TCP connection failed - -#### Cause - -Health Checks failed to establish a TCP connection to your origin server. - -#### Solution - -This typically occurs when there is a network failure between Cloudflare and your origin, and/or a firewall refuses to allow our connection. Ensure your network and firewall configurations are not interfering with traffic. - -### HTTP timeout occurred - -#### Cause - -The origin failed to return an HTTP response within the timeout configured. This happens if you have the timeout set to a low number. For example, one to two seconds. - -#### Solution - -Cloudflare recommends increasing the HTTP response timeout to allow the origin server to respond. - -### Response code mismatch error - -#### Cause - -Cloudflare receives an HTTP status code that does not match the values defined in the `expected_codes` property of your Health Check configuration. - -#### Solution - -Response codes must match the `expected_codes`. Confirm the values are correct by comparing the expected response codes and the status code received in the Event Log. - -#### ​​Alternate cause - -You may also see this issue if you have a Health Check configured to use HTTP connections and your origin server is redirecting to HTTPS. In this case, the response code will often be `301`, `302`, or `303`. - -#### Solution - -Change your Cloudflare Health Check configuration to use HTTPS or set the value of `follow_redirect` to `true` so that Cloudflare can resolve the correct status code. - -### Response body mismatch error - -#### Cause - -The response body returns from your origin server and does not include the (case-insensitive) value of `expected_body` configured in your Health Check. - -:::note -We only read the first 10 KB of the response. If you return a larger response, and the `expected_body` is not in the first 10 KB, the Health Check will fail. -::: - -#### Solution - -Ensure the `expected_body` is in the first 10 KB of the response body. -​​ - -### TLS untrusted certificate error - -#### Cause - -The certificate is not trusted by a public Certificate Authority (CA). - -#### Solution - -If you’re using a self-signed certificate, Cloudflare recommends either using a publicly trusted certificate or setting the `allow_insecure` property on your Health Check to `true`. - -### TLS name mismatch error - -#### Cause - -Our Health Check (client) was not able to match a name on the server certificate to the hostname of the request. - -#### Solution - -Inspect your Health Check configuration to confirm that the `header` value set in the Cloudflare Health Check is correct. - -### TLS protocol error - -#### Cause - -This error can occur if you are using an older version of TLS or your origin server is not configured for HTTPS. - -#### Solution - -Ensure that your origin server supports TLS 1.2 or greater and is configured for HTTPS. - -### TLS unrecognized name error - -#### Cause - -The server did not recognize the name provided by the client. When a host header is set, this is set as the ServerName in the initial TLS handshake. If it is not set, Cloudflare will not provide a ServerName, which can cause this error. - -#### Solution - -Set the host header in your Health Check object. - -### ​​No route to host error - -#### Cause - -The IP address cannot be reached from Cloudflare’s network. Common causes are ISP or hosting provider network issues (e.g. BGP level), or that the IP does not exist. - -#### Solution - -Ensure IP is accurate, and check if there is an ISP or hosting provider network issue. - -### TCP Timeout - -#### Cause - -Data transmission was not acknowledged and the retransmit of data did not succeed. - -#### Solution - -Confirm whether the SYN-ACK for the handshake takes place at your origin and contact [Cloudflare support](/support/contacting-cloudflare-support/). - -### ​​Network Unreachable - -#### Cause - -Cloudflare cannot connect to the origin web server due to network unavailability. This is usually caused by a network issue or incorrect origin IP. - -#### Solution - -Check the IP entered for the origin in Cloudflare’s Health Checks configuration or the IP returned via DNS for the origin hostname. - -### HTTP Invalid Response - -#### Cause - -Usually caused by an HTTP 502 error or bad gateway. - -#### Solution - -Ensure the origin web server responds to requests and that no applications have crashed or are under high load. - -### DNS Unknown Host - -#### Cause - -The origin web server hostname does not exist. - -#### Solution - -Confirm the origin web server resolves to an IP address. - -### Connection Reset by Peer - -#### Cause - -A network error occurred while the client received data from the origin web server. - -#### Solution - -Confirm whether the origin web server is experiencing a high amount of traffic or an error. - -### Monitor Configuration Error - -#### Cause - -There was a configuration error in the Health Check and no checks were run against the origin. - -#### Solution - -Review your Health Check configuration to ensure it matches an expected request to your origin. - -### ​​DNS Internal - -#### Cause - -The origin web server’s hostname resolves to an internal or restricted address. No checks are run against this origin. - -#### Solution - -Cloudflare does not allow use of an origin web server hostname that resolves to a Cloudflare IP. - -### Other Failure - -#### Cause - -If the failure cannot be classified as any other type of failure mentioned above. - -#### Solution - -Contact [Cloudflare support](/support/contacting-cloudflare-support/). diff --git a/src/content/docs/health-checks/how-to/zone-lockdown.mdx b/src/content/docs/health-checks/how-to/zone-lockdown.mdx index a602535b2d9bd9c..6e563485b4227c1 100644 --- a/src/content/docs/health-checks/how-to/zone-lockdown.mdx +++ b/src/content/docs/health-checks/how-to/zone-lockdown.mdx @@ -9,43 +9,6 @@ head: --- -Currently, any Cloudflare customer on a paid plan can configure Health Checks against any host or IP. [Zone Lockdown](/waf/tools/zone-lockdown/) specifies a list of one or more IP addresses, CIDR ranges, or networks that are the only IPs allowed to access a domain, subdomain, or URL. It allows multiple destinations in a single rule as well as IPv4 and IPv6 addresses. IP addresses not specified in the Zone Lockdown rule are denied access to the specified resources. +import { Render } from "~/components"; -When a customer enables zone lockdown, any Health Checks targeting that zone regardless of ownership will still get through because Cloudflare's ASN is on an allow-list. - -Cloudflare's ASN is on an allow-list. This allows health checks to bypass zone lockdown. However, this creates a vulnerability and that behavior will change, resulting in Health Checks no longer being allowed through zone lockdown by default. Customers who use zone lockdown and want their health checks to continue passing can follow the guide below to bypass zone lockdown. - -## Bypass zone lockdown - -To bypass zone lockdown using a WAF custom rule: - -1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account and domain. -2. Go to **Security** > **WAF** > **Custom rules**. -3. Select **Create rule**. -4. Create a custom rule matching on **user agent**. -5. Set the action to *Skip* and the corresponding feature to **Zone Lockdown** under **More components to skip**. - -Cloudflare Health Checks have a user agent of the following format: -`Mozilla/5.0 (compatible;Cloudflare-Healthchecks/1.0;+https://www.cloudflare.com/; healthcheck-id: XXX)` where `XXX` is replaced with the first 16 characters of the Health Check ID. - -To allow a specific Health Check, verify if the user agent contains the first 16 characters of the Health Check ID. - -### Via the API - -This example adds a new WAF custom rule to the ruleset with ID `{ruleset_id}` that skips zone lockdown for incoming requests with a user agent containing `1234567890abcdef`: - -```bash -curl "https://api.cloudflare.com/client/v4/{zone_id}/rulesets/{ruleset_id}/rules" \ ---header "Authorization: Bearer " \ ---header "Content-Type: application/json" \ ---data '{ - "action": "skip", - "action_parameters": { - "products": [ - "zoneLockdown" - ] - }, - "expression": "http.user_agent contains \"1234567890abcdef\"", - "description": "bypass zone lockdown - specific healthcheck" -}' -``` + \ No newline at end of file diff --git a/src/content/docs/health-checks/index.mdx b/src/content/docs/health-checks/index.mdx index 350640a15ba37cc..444d33030d63878 100644 --- a/src/content/docs/health-checks/index.mdx +++ b/src/content/docs/health-checks/index.mdx @@ -6,13 +6,11 @@ sidebar: --- -import { Feature, FeatureTable, GlossaryTooltip, RelatedProduct } from "~/components" +import { Feature, FeatureTable, GlossaryTooltip, RelatedProduct, Render } from "~/components" Standalone Health Checks monitors an IP address or hostname for origin servers or applications and notifies you in near real-time if there happens to be a problem. -A Health Check is a service that runs on Cloudflare’s edge network to monitor whether an origin server is online. This allows you to view the health of your origin servers even if there is only one origin or you do not yet need to balance traffic across your infrastructure. - -Standalone Health Checks support various configurations to hone in on what you can check, including response codes, protocol types, and intervals. You can specify a particular path if an origin server serves multiple applications or check a larger subset of response codes for your staging environment. All of these options allow you to properly target your Health Check, providing a precise picture of what is wrong with an origin server. + :::note diff --git a/src/content/docs/smart-shield/concepts/connection-reuse.mdx b/src/content/docs/smart-shield/concepts/connection-reuse.mdx new file mode 100644 index 000000000000000..b77fa3ad3986c3d --- /dev/null +++ b/src/content/docs/smart-shield/concepts/connection-reuse.mdx @@ -0,0 +1,14 @@ +--- +pcx_content_type: concept +title: Connection reuse +sidebar: + order: 4 +--- + +import { Render } from "~/components"; + +Smart Shield leverages Cloudflare's optimized infrastructure to package multiple requests from an [upper-tier](/smart-shield/configuration/smart-tiered-cache/) into a single connection to your origin. This means overall connections to your origin are lowered by 30% on average. + +## About connection reuse + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/concepts/index.mdx b/src/content/docs/smart-shield/concepts/index.mdx new file mode 100644 index 000000000000000..195a2f7ffbcb121 --- /dev/null +++ b/src/content/docs/smart-shield/concepts/index.mdx @@ -0,0 +1,13 @@ +--- +pcx_content_type: navigation +title: Concepts +sidebar: + order: 3 + group: + label: How it works + hideIndex: true +--- + +import { DirectoryListing } from "~/components"; + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/concepts/network-diagram.mdx b/src/content/docs/smart-shield/concepts/network-diagram.mdx new file mode 100644 index 000000000000000..7253d457e349f17 --- /dev/null +++ b/src/content/docs/smart-shield/concepts/network-diagram.mdx @@ -0,0 +1,10 @@ +--- +pcx_content_type: reference +title: Network diagram +sidebar: + order: 3 +--- + +The diagram below illustrates the different configurations available for Smart Shield and the role each of them plays in protecting your origin while also improving your website or application performance. + +![Network diagram of requests being processed with all Smart Shield features](~/assets/images/smart-shield/network-diagram.png). \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/argo.mdx b/src/content/docs/smart-shield/configuration/argo.mdx new file mode 100644 index 000000000000000..75dbe2a22dcd313 --- /dev/null +++ b/src/content/docs/smart-shield/configuration/argo.mdx @@ -0,0 +1,18 @@ +--- +pcx_content_type: concept +title: Argo Smart Routing +sidebar: + order: 7 +--- + +import { Render } from "~/components"; + +:::note[Availability] +Available with Smart Shield + Argo and Smart Shield Advanced. +::: + + + +Cloudflare provides analytics to show the performance benefits of Argo Smart Routing. + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/cache-reserve/analytics.mdx b/src/content/docs/smart-shield/configuration/cache-reserve/analytics.mdx new file mode 100644 index 000000000000000..9ee574ef44214cd --- /dev/null +++ b/src/content/docs/smart-shield/configuration/cache-reserve/analytics.mdx @@ -0,0 +1,17 @@ +--- +pcx_content_type: concept +title: Cache Reserve analytics +sidebar: + order: 3 + label: Analytics +--- + +import { Render } from "~/components"; + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/cache-reserve/index.mdx b/src/content/docs/smart-shield/configuration/cache-reserve/index.mdx new file mode 100644 index 000000000000000..68b56094e2f7eec --- /dev/null +++ b/src/content/docs/smart-shield/configuration/cache-reserve/index.mdx @@ -0,0 +1,38 @@ +--- +pcx_content_type: concept +title: Cache Reserve +sidebar: + order: 5 +--- + +import { Render } from "~/components"; + +:::note[Availability] +Available with Smart Shield Advanced. +::: + + + +Smart Shield Advanced includes 2 TB of storage for Cache Reserve. + +## Asset eligibility + + + +## Limits + + + +## Delete data + +You can remove all data stored in Cache Reserve. In most cases, deletion takes around 24 hours to be completed. + +1. Select the three dots next to Cache Reserve in your Smart Shield configurations. +2. Choose **View details** to open the Cache Reserve sidebar. +3. Make sure to pause Cache Reserve. +4. Select **Delete data** and then **Save**. +5. Select **Delete** again in the dialog to confirm. + +:::note +If you want to purge your cache instead, refer to [cache configurations](/cache/how-to/purge-cache/). +::: \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/cache-reserve/operations.mdx b/src/content/docs/smart-shield/configuration/cache-reserve/operations.mdx new file mode 100644 index 000000000000000..de139c154fcd877 --- /dev/null +++ b/src/content/docs/smart-shield/configuration/cache-reserve/operations.mdx @@ -0,0 +1,14 @@ +--- +pcx_content_type: concept +title: Cache Reserve operations +sidebar: + order: 2 + label: Operations +--- + +import { Render } from "~/components"; + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/health-checks/analytics.mdx b/src/content/docs/smart-shield/configuration/health-checks/analytics.mdx new file mode 100644 index 000000000000000..eb400735e3e2a2b --- /dev/null +++ b/src/content/docs/smart-shield/configuration/health-checks/analytics.mdx @@ -0,0 +1,16 @@ +--- +pcx_content_type: concept +title: Health Checks analytics +sidebar: + order: 4 + label: Analytics +--- + +import { Render } from "~/components"; + +Use Health Checks analytics to debug possible origin issues. + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/health-checks/index.mdx b/src/content/docs/smart-shield/configuration/health-checks/index.mdx new file mode 100644 index 000000000000000..0f51f6c155568af --- /dev/null +++ b/src/content/docs/smart-shield/configuration/health-checks/index.mdx @@ -0,0 +1,24 @@ +--- +pcx_content_type: concept +title: Health Checks +sidebar: + order: 8 + group: + label: Health Checks +--- + +import { Render, DirectoryListing } from "~/components"; + +:::note[Availability] +Available for Pro, Business, and Enterprise customers in all Smart Shield packages. +::: + + + +## Regions + + + +## Further reading + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/health-checks/setup.mdx b/src/content/docs/smart-shield/configuration/health-checks/setup.mdx new file mode 100644 index 000000000000000..6d7bc65d31c3c1d --- /dev/null +++ b/src/content/docs/smart-shield/configuration/health-checks/setup.mdx @@ -0,0 +1,38 @@ +--- +pcx_content_type: how-to +title: Manage Health Checks +sidebar: + order: 2 + label: Setup +--- + +import { AvailableNotifications, Render } from "~/components"; + +Refer to the section below to learn how to manage your Smart Shield health checks. + +## Create and edit health checks + +1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account and domain. +2. Go to **Speed** > **Smart Shield**. +3. For Health Checks, select **Manage**. +4. Select **Create** or find an existing health check and select **Edit**. +5. Fill out the form or edit existing values, paying special attention to: + * The values for **Interval** and **Check regions**, because decreasing the **Interval** and increasing **Check regions** may increase the load on your origin server. + * **Retries**, which specify the number of retries to attempt in case of a timeout before marking the origin as unhealthy. +6. Select **Save and Deploy**. + +## Configure alerts + +You can configure [notification emails](/notifications/get-started/) to be alerted when the health check detects that there is a change in the status of your origin server. Cloudflare will send you an email within seconds so you can take the necessary action before customers are impacted. + +The email provides information to determine what caused the health status change. You can evaluate when the change happened, the status of the origin server, if and why it is unhealthy, the expected response code, and the received response code. Refer to [common error codes](/smart-shield/configuration/health-checks/analytics/#common-error-codes) for further guidance. + +1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account and domain. +2. Go to **Speed** > **Smart Shield**. +3. For Health Checks, select **Manage** and then **Configure an alert**. +4. Fill out the **Notification name** and **Description**. +5. Add a Notification email. +6. Select **Next**. +7. Add health checks to include in your alerts. +8. Choose the **Notification trigger**, which determines when you receive alerts. +9. Select **Create**. diff --git a/src/content/docs/smart-shield/configuration/health-checks/zone-lockdown.mdx b/src/content/docs/smart-shield/configuration/health-checks/zone-lockdown.mdx new file mode 100644 index 000000000000000..6e563485b4227c1 --- /dev/null +++ b/src/content/docs/smart-shield/configuration/health-checks/zone-lockdown.mdx @@ -0,0 +1,14 @@ +--- +title: Zone Lockdown +pcx_content_type: how-to +sidebar: + order: 8 +head: + - tag: title + content: Zone lockdown migration guide + +--- + +import { Render } from "~/components"; + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/index.mdx b/src/content/docs/smart-shield/configuration/index.mdx new file mode 100644 index 000000000000000..472a3cee55cf126 --- /dev/null +++ b/src/content/docs/smart-shield/configuration/index.mdx @@ -0,0 +1,12 @@ +--- +pcx_content_type: navigation +title: Configuration +sidebar: + order: 5 + group: + hideIndex: true +--- + +import { DirectoryListing } from "~/components"; + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/regional-tiered-cache.mdx b/src/content/docs/smart-shield/configuration/regional-tiered-cache.mdx new file mode 100644 index 000000000000000..b006abd05d831ae --- /dev/null +++ b/src/content/docs/smart-shield/configuration/regional-tiered-cache.mdx @@ -0,0 +1,14 @@ +--- +pcx_content_type: concept +title: Regional Tiered Cache +sidebar: + order: 4 +--- + +import { Render } from "~/components"; + +:::note[Availability] +Available with Smart Shield Advanced. +::: + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/configuration/smart-tiered-cache.mdx b/src/content/docs/smart-shield/configuration/smart-tiered-cache.mdx new file mode 100644 index 000000000000000..b0a9f04131e934a --- /dev/null +++ b/src/content/docs/smart-shield/configuration/smart-tiered-cache.mdx @@ -0,0 +1,16 @@ +--- +pcx_content_type: concept +title: Smart Tiered Cache +sidebar: + order: 3 +--- + +import { Render } from "~/components"; + +:::note[Availability] +Available in all Smart Shield packages. +::: + +With data centers around the world, Cloudflare caches content very close to end users. However, if a piece of content is not in cache, the Cloudflare data centers must contact the origin server to receive the cacheable content. Tiered cache works by dividing Cloudflare's data centers into a hierarchy of lower-tiers and upper-tiers, where only upper-tiers can ask your origin for content. + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/get-started.mdx b/src/content/docs/smart-shield/get-started.mdx new file mode 100644 index 000000000000000..04f615b3bf5f426 --- /dev/null +++ b/src/content/docs/smart-shield/get-started.mdx @@ -0,0 +1,45 @@ +--- +pcx_content_type: get-started +title: Get started +sidebar: + order: 2 +--- + +import { GlossaryTooltip, ResourcesBySelector, DirectoryListing } from "~/components"; + +Smart Shield is available to all customers as an opt-in configuration. + +## Before you begin + +- You should have a Cloudflare account and have [onboarded your domain](/fundamentals/manage-domains/add-site/). +- Also make sure the relevant DNS records are set to proxied. + +## Steps + +1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com/), and select your account and domain. +2. Go to **Speed** > **Smart Shield**. +3. (Optional) Explore the different [available packages](#packages-and-availability). +4. Select **Get started for free** or choose a different package and select **Continue** to proceed to the guided onboarding flow. + +Access analytics and get insights through the [Internet Observatory](/speed/speed-test/) dashboard. + +## Packages and availability + +### Smart Shield + +- Includes [Smart Tiered Cache](/smart-shield/configuration/smart-tiered-cache/) and [connection reuse](/smart-shield/concepts/connection-reuse/). +- Pro, Business, and Enterprise customers also have access to [Health Checks](/smart-shield/configuration/health-checks/). + +### Smart Shield + Argo + +- Includes [Smart Tiered Cache](/smart-shield/configuration/smart-tiered-cache/), [connection reuse](/smart-shield/concepts/connection-reuse/), and [Argo Smart Routing](/smart-shield/configuration/argo/). +- Pro, Business, and Enterprise customers also have access to [Health Checks](/smart-shield/configuration/health-checks/). + +### Smart Shield Advanced + +- Includes [Smart Tiered Cache](/smart-shield/configuration/smart-tiered-cache/), [connection reuse](/smart-shield/concepts/connection-reuse/), [Argo Smart Routing](/smart-shield/configuration/argo/), and additional caching customization with [Regional Tiered Cache](/smart-shield/configuration/regional-tiered-cache/) and [Cache Reserve](/smart-shield/configuration/cache-reserve/). +- Pro, Business, and Enterprise customers also have access to [Health Checks](/smart-shield/configuration/health-checks/). + +## Further reading + + \ No newline at end of file diff --git a/src/content/docs/smart-shield/index.mdx b/src/content/docs/smart-shield/index.mdx new file mode 100644 index 000000000000000..ec00c5090b62baa --- /dev/null +++ b/src/content/docs/smart-shield/index.mdx @@ -0,0 +1,30 @@ +--- +title: Cloudflare Smart Shield +pcx_content_type: overview +description: Use Smart Shield to protect your origin server, improve content availability, and reduce network latency. +head: + - tag: title + content: Overview +--- + +import { Description, Plan, RelatedProduct } from "~/components"; + + +Safeguard your origin with just a few clicks. + + +Smart Shield acts as an intermediate caching layer between Cloudflare's content delivery network and your origin server, consolidating multiple requests from various locations into a single request. Combined with [connection reuse](/smart-shield/concepts/connection-reuse/), this approach significantly reduces origin load while improving website and application performance. + +Learn how to [get started](/smart-shield/get-started/). + +*** + +## Related products + + +Cloudflare Aegis provides dedicated egress IPs (from Cloudflare to your origin) for your layer 7 WAF and CDN services, as well as Spectrum. + + + +Cache stores copies of frequently accessed content (such as images, videos, or webpages) in geographically distributed data centers that are located closer to end users than origin servers, improving website performance. + \ No newline at end of file diff --git a/src/content/partials/aegis/connection-reuse.mdx b/src/content/partials/aegis/connection-reuse.mdx new file mode 100644 index 000000000000000..b1073bec5c02baa --- /dev/null +++ b/src/content/partials/aegis/connection-reuse.mdx @@ -0,0 +1,13 @@ +--- +{} +--- + +import { Details } from "~/components"; + +Implemented by HTTP/1.1, connection reuse describes multiple requests passing through one same connection (between one source IP:port and one destination IP:port). It is commonly the case even for simple websites nowadays. + +For example, when a connection is initiated for `shop.example.com`, several embedded subresources may be requested - CSS, image files, advertisement, etc. This can mean hundreds of requests just for the website to load. Instead of having a one to one ratio of request per connection, a single connection is used for multiple requests. + +With HTTP/2, requests can use the same connection even if they are for different domains. + +For example, a connection initiated for `shop.example.com` can be used for requests for `blog.example.com` as well - as long as the requests have the same destination IP:port and the server TLS certificate is authoritative for both hostnames. \ No newline at end of file diff --git a/src/content/partials/cache/cache-reserve-analytics.mdx b/src/content/partials/cache/cache-reserve-analytics.mdx new file mode 100644 index 000000000000000..afcbc31337e8026 --- /dev/null +++ b/src/content/partials/cache/cache-reserve-analytics.mdx @@ -0,0 +1,21 @@ +--- +params: + - conditional? +--- + +Cache Reserve Analytics provides insights regarding your Cache Reserve usage. It allows you to check what content is stored in Cache Reserve, how often it is being accessed, how long it has been there and how much egress from your origin it is saving you. + +{ props.conditional === "smart-shield-tile" && ( +

You have access to the following metrics:

+)} + +{ props.conditional === "dedicated-cache-tile" && ( +

In the Overview section, under Cache Reserve, you have access to the following metrics:

+)} + +- **Egress savings (bandwidth)** - is an estimation based on response bytes served from Cache Reserve that did not need to be served from your origin server. These are represented as cache hits. +- **Requests served by Cache Reserve** - is the number of requests served by Cache Reserve (total). +- **Data storage summary** - is based on a representative sample of requests. Refer to [Sampling](/analytics/graphql-api/sampling/) for more details about how Cloudflare samples data. + - **Current data stored** - is the data stored (currently) over time. + - **Aggregate storage usage** - is the total of storage used for the selected timestamp. +- **Operations** - Class A (writes) and Class B (reads) operations over time. \ No newline at end of file diff --git a/src/content/partials/cache/cache-reserve-eligibility.mdx b/src/content/partials/cache/cache-reserve-eligibility.mdx new file mode 100644 index 000000000000000..498e0d7b1c32bad --- /dev/null +++ b/src/content/partials/cache/cache-reserve-eligibility.mdx @@ -0,0 +1,10 @@ +--- +{} +--- + +Not all assets are eligible for Cache Reserve. To be admitted into Cache Reserve, assets must: + +- Be cacheable, according to Cloudflare's standard [cacheability factors](/cache/). +- Have a freshness time-to-live (TTL) of at least 10 hours (set by any means such as Cache-Control / [CDN-Cache-Control](/cache/concepts/cache-control/) origin response headers, [Edge Cache TTL](/cache/how-to/edge-browser-cache-ttl/#edge-cache-ttl), [Cache TTL By Status](/cache/how-to/configure-cache-status-code/), or [Cache Rules](/cache/how-to/cache-rules/)), +- Have a Content-Length response header. +- When using [Image transformations](/images/manage-images/create-variants/), original files are eligible for Cache Reserve, but resized file variants are not eligible because transformations happen after Cache Reserve in the response flow. \ No newline at end of file diff --git a/src/content/partials/cache/cache-reserve-intro.mdx b/src/content/partials/cache/cache-reserve-intro.mdx new file mode 100644 index 000000000000000..e2f420e60a81457 --- /dev/null +++ b/src/content/partials/cache/cache-reserve-intro.mdx @@ -0,0 +1,7 @@ +--- +{} +--- + +Cache Reserve is a large, persistent data store [implemented on top of R2](/r2/). By pushing a single button in the dashboard, your website's cacheable content will be written to Cache Reserve. + +In the same way that Tiered Cache builds a hierarchy of caches between your visitors and your origin, Cache Reserve serves as the ultimate upper-tier cache, that will reserve storage space for your assets for as long as you want. This ensures that your content is served from cache longer, shielding your origin from unneeded egress fees. \ No newline at end of file diff --git a/src/content/partials/cache/cache-reserve-limits.mdx b/src/content/partials/cache/cache-reserve-limits.mdx new file mode 100644 index 000000000000000..e98031a3e1fb9ba --- /dev/null +++ b/src/content/partials/cache/cache-reserve-limits.mdx @@ -0,0 +1,10 @@ +--- +{} +--- + +- Cache Reserve file limits are the same as [R2 limits](/r2/platform/limits/). Note that [CDN cache limits](/cache/concepts/default-cache-behavior/#customization-options-and-limits) still apply. Assets larger than standard limits will not be stored in the standard CDN cache, so these assets will incur Cache Reserve operations costs far more frequently. +- Origin Range requests are not supported at this time from Cache Reserve. +- [Vary for images](/cache/advanced-configuration/vary-for-images/) is currently not compatible with Cache Reserve. +- Requests to [R2 public buckets linked to a zone's domain](/r2/buckets/public-buckets/) will not use Cache Reserve. Enabling Cache Reserve for the connected zone will use Cache Reserve only for requests not destined for the R2 bucket. +- Cache Reserve makes requests for uncompressed content directly from the origin. Unlike the standard Cloudflare CDN, Cache Reserve does not include the `Accept-Encoding: gzip` header when sending requests to the origin. +- Cache Reserve is bypassed when using the Cloudflare [O2O](/cloudflare-for-platforms/cloudflare-for-saas/saas-customers/how-it-works/) setup. \ No newline at end of file diff --git a/src/content/partials/cache/cache-reserve-operations.mdx b/src/content/partials/cache/cache-reserve-operations.mdx new file mode 100644 index 000000000000000..7d9ec8cabea8443 --- /dev/null +++ b/src/content/partials/cache/cache-reserve-operations.mdx @@ -0,0 +1,25 @@ +--- +{} +--- + +Operations are performed by Cache Reserve on behalf of the user to write data from the origin to Cache Reserve and to pass that data downstream to other parts of Cloudflare’s network. These operations are managed internally by Cloudflare. + +#### Class A operations (writes) + +Class A operations are performed based on cache misses from Cloudflare’s CDN. When a request cannot be served from cache, it will be fetched from the origin and written to cache reserve as well as our edge caches on the way back to the visitor. + +#### Class B operations (reads) + +Class B operations are performed when data needs to be fetched from Cache Reserve to respond to a miss in the edge cache. + +#### Purge + +Asset purges are free operations. + +Cache Reserve will be instantly purged along with edge cache when you send a purge by URL request. Refer to [cache configurations](/cache/how-to/purge-cache/) for details. + +Other purge methods, such as purge by tag, host, prefix, or purge everything will force an attempt to [revalidate](/cache/concepts/cache-responses/#revalidated) on the subsequent request for the Cache Reserve asset. Note that assets purged this way will still incur storage costs until their retention TTL expires. + +:::note +Note this differs from the standard CDN's purge by tag, host, or prefix features which force a cache miss, requiring the origin to deliver the asset in full. +::: \ No newline at end of file diff --git a/src/content/partials/cache/regional-tiered-cache.mdx b/src/content/partials/cache/regional-tiered-cache.mdx new file mode 100644 index 000000000000000..2da23da74a44c6f --- /dev/null +++ b/src/content/partials/cache/regional-tiered-cache.mdx @@ -0,0 +1,7 @@ +--- +{} +--- + +Regional Tiered Cache provides an additional layer of caching for customers who have a global traffic footprint and want to serve content faster by avoiding network latency when there is a cache `MISS` in a lower-tier, resulting in an upper-tier fetch in a data center located far away. + +Regional Tiered Cache instructs Cloudflare to check a regional hub data center near the lower tier before going to the upper tier that may be outside of the region. \ No newline at end of file diff --git a/src/content/partials/cache/smart-tiered-cache.mdx b/src/content/partials/cache/smart-tiered-cache.mdx new file mode 100644 index 000000000000000..79b3bc8c32fcd57 --- /dev/null +++ b/src/content/partials/cache/smart-tiered-cache.mdx @@ -0,0 +1,17 @@ +--- +{} +--- + +Smart Tiered Cache dynamically selects the single closest upper tier for each of your website’s origins with no configuration required, using our in-house performance and routing data. Cloudflare collects latency data for each request to an origin, and uses the latency data to determine how well any upper-tier data center is connected with an origin. As a result, Cloudflare can select the data center with the lowest latency to be the upper-tier for an origin. + +#### Load Balancing interaction + +While Smart Tiered Cache selects one Upper Tier per origin, when using Load Balancing, Smart Tiered Cache will select the single best Upper Tier for the entire [Load Balancing Pool](/load-balancing/understand-basics/load-balancing-components/#pools). + +#### Caveats + +Smart Tiered Cache does not work when an origin is behind an [anycast](https://www.cloudflare.com/en-gb/learning/cdn/glossary/anycast-network/) or a regional unicast network because that will prevent us from knowing where the origin is located. As a result, we are unable to select the optimal upper tier and latency may be negatively impacted. + +You need to be careful when updating your origin IPs/DNS records while Smart Tiered Cache is enabled. Depending on the changes made, it may cause the existing assigned upper tiers to change, resulting in an increased `MISS` rate as cache is refilled in the new upper tiers. If the origin is switched to a network behind anycast, it will significantly reduce the effectiveness of Smart Tiered Cache. + +If you need to use anycast or regional unicast and want to use Smart Tiered cache, please engage your account team. \ No newline at end of file diff --git a/src/content/partials/smart-shield/argo-analytics.mdx b/src/content/partials/smart-shield/argo-analytics.mdx new file mode 100644 index 000000000000000..32f48959a9305a7 --- /dev/null +++ b/src/content/partials/smart-shield/argo-analytics.mdx @@ -0,0 +1,5 @@ +--- +{} +--- + +Analytics collects data based on the time-to-first-byte (TTFB) from your origin to the Cloudflare network. TTFB is the delay between when Cloudflare sends a request to your server and when it receives the first byte in response. Argo Smart Routing optimizes your server's network transit time to minimize this delay. \ No newline at end of file diff --git a/src/content/partials/smart-shield/argo-intro.mdx b/src/content/partials/smart-shield/argo-intro.mdx new file mode 100644 index 000000000000000..268b8495d8fe135 --- /dev/null +++ b/src/content/partials/smart-shield/argo-intro.mdx @@ -0,0 +1,10 @@ +--- +params: + - conditional? +--- + +Argo Smart Routing detects real-time network issues and routes your web traffic across the most efficient network path, avoiding congestion. + +{ props.conditional === "dedicated-argo-tile" && ( +

This results in faster loading times, increased reliability, and reduced costs. These benefits are most apparent for users farthest from your origin server.

+)} diff --git a/src/content/partials/smart-shield/health-checks-analytics.mdx b/src/content/partials/smart-shield/health-checks-analytics.mdx new file mode 100644 index 000000000000000..2983c5deb95bc9f --- /dev/null +++ b/src/content/partials/smart-shield/health-checks-analytics.mdx @@ -0,0 +1,197 @@ +--- +{} +--- + +You can evaluate origin uptime, latency, failure reason, and specific event logs: + +- **Health Checks By Uptime**: Shows the percentage of uptime for individual origins over time. +- **Health Checks By Failure Reason**: Shows a breakdown of failures by the specific reason. Refer to [common error code causes and solutions below](#common-error-codes). +- **Health Checks By Latency**: Shows average latency – measured in round trip time — for individual origins over time. +- **Event Log**: Shows individual health check data. + - Select each record for additional details on **Round trip time**, the **Failure Reason**, the **Average Waterfall** (showing chronological data about request stages), **Response status code**, and more. + - Note that **Global** is not a configured region; it represents the aggregated data from all enabled regions. + +## Common error codes + +### TCP connection failed + +#### Cause + +Health Checks failed to establish a TCP connection to your origin server. + +#### Solution + +This typically occurs when there is a network failure between Cloudflare and your origin, and/or a firewall refuses to allow our connection. Ensure your network and firewall configurations are not interfering with traffic. + +### HTTP timeout occurred + +#### Cause + +The origin failed to return an HTTP response within the timeout configured. This happens if you have the timeout set to a low number. For example, one to two seconds. + +#### Solution + +Cloudflare recommends increasing the HTTP response timeout to allow the origin server to respond. + +### Response code mismatch error + +#### Cause + +Cloudflare receives an HTTP status code that does not match the values defined in the `expected_codes` property of your Health Check configuration. + +#### Solution + +Response codes must match the `expected_codes`. Confirm the values are correct by comparing the expected response codes and the status code received in the Event Log. + +#### ​​Alternate cause + +You may also see this issue if you have a Health Check configured to use HTTP connections and your origin server is redirecting to HTTPS. In this case, the response code will often be `301`, `302`, or `303`. + +#### Solution + +Change your Cloudflare Health Check configuration to use HTTPS or set the value of `follow_redirect` to `true` so that Cloudflare can resolve the correct status code. + +### Response body mismatch error + +#### Cause + +The response body returns from your origin server and does not include the (case-insensitive) value of `expected_body` configured in your Health Check. + +:::note +We only read the first 10 KB of the response. If you return a larger response, and the `expected_body` is not in the first 10 KB, the Health Check will fail. +::: + +#### Solution + +Ensure the `expected_body` is in the first 10 KB of the response body. +​​ + +### TLS untrusted certificate error + +#### Cause + +The certificate is not trusted by a public Certificate Authority (CA). + +#### Solution + +If you’re using a self-signed certificate, Cloudflare recommends either using a publicly trusted certificate or setting the `allow_insecure` property on your Health Check to `true`. + +### TLS name mismatch error + +#### Cause + +Our Health Check (client) was not able to match a name on the server certificate to the hostname of the request. + +#### Solution + +Inspect your Health Check configuration to confirm that the `header` value set in the Cloudflare Health Check is correct. + +### TLS protocol error + +#### Cause + +This error can occur if you are using an older version of TLS or your origin server is not configured for HTTPS. + +#### Solution + +Ensure that your origin server supports TLS 1.2 or greater and is configured for HTTPS. + +### TLS unrecognized name error + +#### Cause + +The server did not recognize the name provided by the client. When a host header is set, this is set as the ServerName in the initial TLS handshake. If it is not set, Cloudflare will not provide a ServerName, which can cause this error. + +#### Solution + +Set the host header in your Health Check object. + +### ​​No route to host error + +#### Cause + +The IP address cannot be reached from Cloudflare’s network. Common causes are ISP or hosting provider network issues (e.g. BGP level), or that the IP does not exist. + +#### Solution + +Ensure IP is accurate, and check if there is an ISP or hosting provider network issue. + +### TCP Timeout + +#### Cause + +Data transmission was not acknowledged and the retransmit of data did not succeed. + +#### Solution + +Confirm whether the SYN-ACK for the handshake takes place at your origin and contact [Cloudflare support](/support/contacting-cloudflare-support/). + +### ​​Network Unreachable + +#### Cause + +Cloudflare cannot connect to the origin web server due to network unavailability. This is usually caused by a network issue or incorrect origin IP. + +#### Solution + +Check the IP entered for the origin in Cloudflare’s Health Checks configuration or the IP returned via DNS for the origin hostname. + +### HTTP Invalid Response + +#### Cause + +Usually caused by an HTTP 502 error or bad gateway. + +#### Solution + +Ensure the origin web server responds to requests and that no applications have crashed or are under high load. + +### DNS Unknown Host + +#### Cause + +The origin web server hostname does not exist. + +#### Solution + +Confirm the origin web server resolves to an IP address. + +### Connection Reset by Peer + +#### Cause + +A network error occurred while the client received data from the origin web server. + +#### Solution + +Confirm whether the origin web server is experiencing a high amount of traffic or an error. + +### Monitor Configuration Error + +#### Cause + +There was a configuration error in the Health Check and no checks were run against the origin. + +#### Solution + +Review your Health Check configuration to ensure it matches an expected request to your origin. + +### ​​DNS Internal + +#### Cause + +The origin web server’s hostname resolves to an internal or restricted address. No checks are run against this origin. + +#### Solution + +Cloudflare does not allow use of an origin web server hostname that resolves to a Cloudflare IP. + +### Other Failure + +#### Cause + +If the failure cannot be classified as any other type of failure mentioned above. + +#### Solution + +Contact [Cloudflare support](/support/contacting-cloudflare-support/). \ No newline at end of file diff --git a/src/content/partials/smart-shield/health-checks-intro.mdx b/src/content/partials/smart-shield/health-checks-intro.mdx new file mode 100644 index 000000000000000..ed843ebdf208147 --- /dev/null +++ b/src/content/partials/smart-shield/health-checks-intro.mdx @@ -0,0 +1,7 @@ +--- +{} +--- + +A health check is a service that runs on Cloudflare's edge network to monitor whether an origin server is online. This allows you to view the health of your origin servers even if there is only one origin or you do not yet need to balance traffic across your infrastructure. + +Health Checks support various configurations to hone in on what you can check, including response codes, protocol types, and intervals. You can specify a particular path if an origin server serves multiple applications or check a larger subset of response codes for your staging environment. All of these options allow you to properly target your Health Check, providing a precise picture of what is wrong with an origin server. \ No newline at end of file diff --git a/src/content/partials/smart-shield/health-checks-regions.mdx b/src/content/partials/smart-shield/health-checks-regions.mdx new file mode 100644 index 000000000000000..1ed9c18dbf2e827 --- /dev/null +++ b/src/content/partials/smart-shield/health-checks-regions.mdx @@ -0,0 +1,13 @@ +--- +{} +--- + +Cloudflare has data centers in [hundreds of cities worldwide](https://www.cloudflare.com/network/). Health checks do not run from every single of these data centers as this would result in numerous requests to your servers. Instead, you are able to choose between one and thirteen regions from which to run health checks. Cloudflare will run Health Checks from three data centers in each region that you select. + +:::note +The exact location of these data centers are subject to change at any moment. +::: + +The Internet is not the same everywhere around the world and your users may not have the same experience on your application according to where they are. Running Health Checks from different regions lets you know the health of your application from the point of view of the Cloudflare network in each of these regions. + +If you select multiple regions or choose **All Regions** (Business and Enterprise Only), you may increase traffic to your servers. Each region sends individual health checks from three data centers. \ No newline at end of file diff --git a/src/content/partials/smart-shield/smart-shield-callout.mdx b/src/content/partials/smart-shield/smart-shield-callout.mdx new file mode 100644 index 000000000000000..15c3e70be832e5a --- /dev/null +++ b/src/content/partials/smart-shield/smart-shield-callout.mdx @@ -0,0 +1,7 @@ +--- +{} +--- + +:::note[Smart Shield] +This functionality is now offered as part of Cloudflare's origin server safeguard, Smart Shield. [Learn more](/smart-shield/). +::: \ No newline at end of file diff --git a/src/content/partials/smart-shield/zone-lockdown.mdx b/src/content/partials/smart-shield/zone-lockdown.mdx new file mode 100644 index 000000000000000..b1295d3558a5ad2 --- /dev/null +++ b/src/content/partials/smart-shield/zone-lockdown.mdx @@ -0,0 +1,42 @@ +--- +{} +--- + +Currently, any Cloudflare customer on a paid plan can configure Health Checks against any host or IP. [Zone Lockdown](/waf/tools/zone-lockdown/) specifies a list of one or more IP addresses, CIDR ranges, or networks that are the only IPs allowed to access a domain, subdomain, or URL. It allows multiple destinations in a single rule as well as IPv4 and IPv6 addresses. IP addresses not specified in the Zone Lockdown rule are denied access to the specified resources. + +Customers who use zone lockdown and want their health checks to continue passing can follow the guide below to bypass zone lockdown. + +## Bypass zone lockdown + +To bypass zone lockdown using a WAF custom rule: + +1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account and domain. +2. Go to **Security** > **WAF** > **Custom rules**. +3. Select **Create rule**. +4. Create a custom rule matching on **user agent**. +5. Set the action to *Skip* and the corresponding feature to **Zone Lockdown** under **More components to skip**. + +Cloudflare Health Checks have a user agent of the following format: +`Mozilla/5.0 (compatible;Cloudflare-Healthchecks/1.0;+https://www.cloudflare.com/; healthcheck-id: XXX)` where `XXX` is replaced with the first 16 characters of the Health Check ID. + +To allow a specific Health Check, verify if the user agent contains the first 16 characters of the Health Check ID. + +### Via the API + +This example adds a new WAF custom rule to the ruleset with ID `{ruleset_id}` that skips zone lockdown for incoming requests with a user agent containing `1234567890abcdef`: + +```bash +curl "https://api.cloudflare.com/client/v4/{zone_id}/rulesets/{ruleset_id}/rules" \ +--header "Authorization: Bearer " \ +--header "Content-Type: application/json" \ +--data '{ + "action": "skip", + "action_parameters": { + "products": [ + "zoneLockdown" + ] + }, + "expression": "http.user_agent contains \"1234567890abcdef\"", + "description": "bypass zone lockdown - specific healthcheck" +}' +``` diff --git a/src/content/products/smart-shield.yaml b/src/content/products/smart-shield.yaml new file mode 100644 index 000000000000000..7c1550eaaf3e4ab --- /dev/null +++ b/src/content/products/smart-shield.yaml @@ -0,0 +1,13 @@ +name: Smart Shield + +product: + title: Smart Shield + url: /smart-shield/ + group: Application performance + additional_groups: + [Application security, Network security] + +meta: + title: Cloudflare Smart Shield docs + description: Safeguard your origin with just a few clicks. + author: "@cloudflare" \ No newline at end of file diff --git a/src/icons/smart-shield.svg b/src/icons/smart-shield.svg new file mode 100644 index 000000000000000..fe1cc393691e4ab --- /dev/null +++ b/src/icons/smart-shield.svg @@ -0,0 +1,3 @@ + + +