From 6f44e4beedc98e2ff0b147215ee4a57aadffe813 Mon Sep 17 00:00:00 2001 From: Denise Pena Date: Fri, 14 Feb 2025 09:56:12 -0600 Subject: [PATCH 01/10] Revised how CF works --- .../images/fundamentals/reverse-proxy.png | Bin 0 -> 94096 bytes .../concepts/how-cloudflare-works.mdx | 55 +++++++----------- 2 files changed, 20 insertions(+), 35 deletions(-) create mode 100644 src/assets/images/fundamentals/reverse-proxy.png diff --git a/src/assets/images/fundamentals/reverse-proxy.png b/src/assets/images/fundamentals/reverse-proxy.png new file mode 100644 index 0000000000000000000000000000000000000000..e47bb2f4f3530d772a6e25fe3c419b1e487c2dc5 GIT binary patch literal 94096 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

Tu)%Z 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, as well as our [CDN reference architecture](/reference-architecture/architectures/cdn/) to learn more about how Cloudflare processes and optimizes your web traffic. +Your domain status is active when your nameservers are updated to point to Cloudflare and have been authenticated. The proxy status defines how Cloudflare treats queries for that record. The anycast IP address is used to distribute traffic amongst Cloudflare's network, which protects your origin server from DDos attacks and can help optimize, cache, and protect requests to your application. -:::note +## Cloudflare as a reverse proxy -Proxying is on by default for records that serve `HTTP/HTTPS` traffic (`A`, `AAAA`, and `CNAME` records). To proxy `HTTP/HTTPS` traffic on [non-standard ports](/fundamentals/reference/network-ports/) or to proxy a `TCP-` or `UDP-` based application, use [Cloudflare Spectrum](/spectrum/). -::: +A reverse proxy is a server that sits in front of web servers and forwards client (for example, web browser) requests to those web servers. Reverse proxies are typically implemented to help increase security, performance, and reliability. -In the Cloudflare dashboard, find out which DNS records are proxied by selecting your domain and navigating to the **DNS records** tab. +![The flow of a request from a server through Cloudflare to the origin server when Cloudflare is a reverse proxy.](~/assets/images/fundamentals/reverse-proxy.png) -#### Example DNS table +When DNS records in your DNS table have a `proxied` status, the record's HTTP/HTTPS traffic will route through Cloudflare on its way between the client and the origin server. If the domain's status is active, all HTTP/HTTPS requests for proxied DNS records route through Cloudflare. -| Type | Name | Content | Proxy status | TTL | Actions | -| :--: | :----: | :---------: | :----------: | :----: | ------: | -| `A` | `blog` | `192.0.2.1` | `Proxied` | `Auto` | `Edit` | -| `A` | `shop` | `192.0.2.2` | `DNS only` | `Auto` | `Edit` | +Using Cloudflare as a reverse proxy has several benefits, including: -In the example DNS table above, there are two DNS records. The record with the name `blog` has the proxy on, while the record named `shop` has the proxy off (that is, `DNS only`). - -#### Proxied DNS record example - -When the browser initiates a `HTTP/HTTPS` request to `blog.example.com`, a DNS resolver will convert the hostname into an IP address. Since this domain is using Cloudflare as its Authoritative DNS provider, the DNS query will be routed to Cloudflare; and because the proxy is on, Cloudflare will answer with an anycast IP address. Subsequently, the browser initiates a `HTTP/HTTPS` request back to Cloudflare. When Cloudflare receives this request, it performs a lookup to find the matching domain and account configuration and processes the request accordingly. Cloudflare forwards it to the configured origin server, which is `192.0.2.1`. - -#### DNS only record example - -When the browser initiates a `HTTP/HTTPS` request to `shop.example.com`, a DNS resolver will convert the hostname into an IP address. Since this domain is using Cloudflare as its Authoritative DNS provider, the DNS query will be routed to Cloudflare; but since the proxy is off (that is, `DNS only`), Cloudflare will answer with `192.0.2.2`. Finally, the browser initiates a `HTTP/HTTPS` request to the server hosted at `192.0.2.2`. - -#### HTTP methods Cloudflare supports - -Cloudflare supports all standard HTTP methods, with the exception of `CONNECT`, `TRACE`, and `PURGE`, which are restricted. \ No newline at end of file +- **Load balancing** A reverse proxy can provide a load balancing solution which will distribute the incoming traffic evenly among the different servers to prevent any single server from becoming overloaded. In the event that a server fails completely, other servers can step up to handle the traffic. +- **Protection from attacks.** With a reverse proxy in place, a web site or service never needs to reveal the IP address of their origin servers, which makes it much harder for attackers to leverage a targeted attack against them, such as a DDoS attack. Instead the attackers will only be able to target the reverse proxy, such as Cloudflare's CDN, which will have tighter security and more resources to fend off a cyber attack. +- **Caching.** A reverse proxy can also cache content, resulting in faster performance. For example, if a user in Paris visits a reverse-proxied website with web servers in Los Angeles, the user might actually connect to a local reverse proxy server in Paris, which will then have to communicate with an origin server in L.A. The proxy server can then cache (or temporarily save) the response data. Subsequent Parisian users who browse the site will then get the locally cached version from the Parisian reverse proxy server, resulting in much faster performance. +- **SSL encryption.** Encrypting and decrypting SSL (or TLS) communications for each client can be computationally expensive for an origin server. A reverse proxy can be configured to decrypt all incoming requests and encrypt all outgoing responses, freeing up valuable resources on the origin server. From 625c52ddc68fa9df95be64058ed20ddc85b2c1f4 Mon Sep 17 00:00:00 2001 From: Denise Pena Date: Fri, 14 Feb 2025 10:30:58 -0600 Subject: [PATCH 02/10] Fixed links --- .../docs/fundamentals/concepts/how-cloudflare-works.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index 81507ea7e27bc91..57f132924db5617 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -24,9 +24,9 @@ A DNS query is like asking for directions to a place, and the DNS records are in ## Cloudflare as a DNS provider -When Cloudflare receives a DNS query for your domain, the response is determined by the configuration [set in your DNS table](/dns/manage-dns-records/how-to/create-dns-records/), including the [type of the record](/dns/manage-dns-records/reference/dns-record-types/), the record's [proxy eligibility](/dns/proxy-status/limitations/#proxy-eligibility), and its [proxy status](/dns/manage-dns-records/reference/proxied-dns-records/). +When Cloudflare receives a DNS query for your domain, the response is determined by the configuration [set in your DNS table](/dns/manage-dns-records/how-to/create-dns-records/), including the [type of the record](/dns/manage-dns-records/reference/dns-record-types/), the record's [proxy eligibility](/dns/proxy-status/limitations/#proxy-eligibility), and its [proxy status](/dns/proxy-status/#proxied-records). -If your [domain's status](/dns/zone-setups/reference/domain-status/) is active and the queried DNS record is set to `proxied`, Cloudflare responds with an [anycast IP address](m/fundamentals/concepts/cloudflare-ip-addresses/), instead of the origin server defined in your DNS table. +If your [domain's status](/dns/zone-setups/reference/domain-status/) is active and the queried DNS record is set to `proxied`, Cloudflare responds with an [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/), instead of the origin server defined in your DNS table. Your domain status is active when your nameservers are updated to point to Cloudflare and have been authenticated. The proxy status defines how Cloudflare treats queries for that record. The anycast IP address is used to distribute traffic amongst Cloudflare's network, which protects your origin server from DDos attacks and can help optimize, cache, and protect requests to your application. From eb48d7041e2731e8b8f378344b7d0547df67cee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denise=20Pe=C3=B1a?= <75506267+dcpena@users.noreply.github.com> Date: Wed, 19 Feb 2025 10:20:21 -0600 Subject: [PATCH 03/10] Apply suggestions from code review Co-authored-by: abstergail <115666354+abstergail@users.noreply.github.com> --- .../fundamentals/concepts/how-cloudflare-works.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index 57f132924db5617..f4a033c39a9ee7c 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -1,6 +1,6 @@ --- pcx_content_type: concept -title: How Application Security works +title: How Cloudflare CDN works sidebar: order: 2 @@ -8,12 +8,12 @@ sidebar: import { GlossaryTooltip } from "~/components" -To optimize your website or web application, Cloudflare acts as a [DNS provider](https://www.cloudflare.com/learning/dns/what-is-dns/) for your domain and a [reverse proxy](https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/) for your web traffic. +To optimize your website or web application, Cloudflare acts as a [CDN](https://www.cloudflare.com/learning/cdn/what-is-a-cdn/) and [DNS provider](https://www.cloudflare.com/learning/dns/what-is-dns/) for your domain and a [reverse proxy](https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/) for your web traffic. ## DNS explained -The Domain Name System (DNS) provider is like the phonebook of the Internet and tells your browser where a website's content lives. Each domain name–such as cloudflare.com–is mapped to an Internet Protocol (IP) address; the IP address is a numerical label assigned to a website that looks like `103.21.244.0`, for example. +The Domain Name System (DNS) is like the phonebook of the Internet and tells your browser where a website's content lives. Each domain name–such as cloudflare.com–is mapped to an Internet Protocol (IP) address; the IP address is a numerical label assigned to a website that looks like `103.21.244.0`, for example. If DNS is the phonebook of the Internet, the IP address is like a home address, and the domain name is the human-friendly name. @@ -26,13 +26,13 @@ A DNS query is like asking for directions to a place, and the DNS records are in When Cloudflare receives a DNS query for your domain, the response is determined by the configuration [set in your DNS table](/dns/manage-dns-records/how-to/create-dns-records/), including the [type of the record](/dns/manage-dns-records/reference/dns-record-types/), the record's [proxy eligibility](/dns/proxy-status/limitations/#proxy-eligibility), and its [proxy status](/dns/proxy-status/#proxied-records). -If your [domain's status](/dns/zone-setups/reference/domain-status/) is active and the queried DNS record is set to `proxied`, Cloudflare responds with an [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/), instead of the origin server defined in your DNS table. +If your [domain's status](/dns/zone-setups/reference/domain-status/) is active and the queried DNS record is set to `proxied`, Cloudflare responds with an [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/), instead of the actual IP address of the origin server as defined in your DNS table. -Your domain status is active when your nameservers are updated to point to Cloudflare and have been authenticated. The proxy status defines how Cloudflare treats queries for that record. The anycast IP address is used to distribute traffic amongst Cloudflare's network, which protects your origin server from DDos attacks and can help optimize, cache, and protect requests to your application. +Your domain status is active when your nameservers are updated to point to Cloudflare and have been authenticated. The proxy status defines how Cloudflare treats queries for specific DNS records. The anycast IP address is used to distribute traffic amongst Cloudflare's network, which protects your website or app from [DDoS](https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/) and other attacks, while optimizing site speed. ## Cloudflare as a reverse proxy -A reverse proxy is a server that sits in front of web servers and forwards client (for example, web browser) requests to those web servers. Reverse proxies are typically implemented to help increase security, performance, and reliability. +A reverse proxy is a network of servers that sits in front of web servers and either forwards requests to those web servers, or handles requests on behalf of the web servers. Reverse proxies are typically implemented to help increase security, performance, and reliability of websites and web applications. ![The flow of a request from a server through Cloudflare to the origin server when Cloudflare is a reverse proxy.](~/assets/images/fundamentals/reverse-proxy.png) From 7e7163e268c581cd294751da737dca44e23f6a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denise=20Pe=C3=B1a?= <75506267+dcpena@users.noreply.github.com> Date: Wed, 19 Feb 2025 14:37:16 -0600 Subject: [PATCH 04/10] Update src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx Co-authored-by: abstergail <115666354+abstergail@users.noreply.github.com> --- src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index f4a033c39a9ee7c..fbcff791db0582e 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -19,7 +19,7 @@ If DNS is the phonebook of the Internet, the IP address is like a home address, After you add a site to Cloudflare under a full DNS setup, Cloudflare becomes the primary authoritative DNS provider for your domain. As the authoritative DNS provider, Cloudflare responds to DNS queries for your domain, and you manage your domain's DNS records via the Cloudflare dashboard or API. -A DNS query is like asking for directions to a place, and the DNS records are instructions that live in authoritative [DNS servers](https://www.cloudflare.com/learning/dns/dns-server-types/) and provide information about a domain. The DNS record contains information such as the [IP address](https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/) associated with a domain and how to handle requests for the domain. +A DNS query is like asking for directions to a place, and the DNS records are the source-of-truth for what exists where. DNS records live in authoritative [DNS servers](https://www.cloudflare.com/learning/dns/dns-server-types/) and provide information about a domain, such as the [IP addresses](https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/) of the servers that host the web content and services on that domain. With this information, Internet browsers know where to find a website or app, so they can render it for visitors using [HTTP](https://www.cloudflare.com/learning/ddos/glossary/hypertext-transfer-protocol-http/). ## Cloudflare as a DNS provider From ed36f4f6d418e0a34ecd977be4fad5be782e8f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denise=20Pe=C3=B1a?= <75506267+dcpena@users.noreply.github.com> Date: Wed, 19 Feb 2025 14:37:26 -0600 Subject: [PATCH 05/10] Update src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx Co-authored-by: abstergail <115666354+abstergail@users.noreply.github.com> --- src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index fbcff791db0582e..4fe7eefe157fd57 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -40,7 +40,7 @@ When DNS records in your DNS table have a `proxied` status, the record's HTTP/HT Using Cloudflare as a reverse proxy has several benefits, including: -- **Load balancing** A reverse proxy can provide a load balancing solution which will distribute the incoming traffic evenly among the different servers to prevent any single server from becoming overloaded. In the event that a server fails completely, other servers can step up to handle the traffic. +- **Load balancing** A reverse proxy can provide a load balancing solution which distributes incoming traffic evenly among different servers to prevent any single server from becoming overloaded. In the event that a server fails completely, other servers can step up to handle the traffic. - **Protection from attacks.** With a reverse proxy in place, a web site or service never needs to reveal the IP address of their origin servers, which makes it much harder for attackers to leverage a targeted attack against them, such as a DDoS attack. Instead the attackers will only be able to target the reverse proxy, such as Cloudflare's CDN, which will have tighter security and more resources to fend off a cyber attack. - **Caching.** A reverse proxy can also cache content, resulting in faster performance. For example, if a user in Paris visits a reverse-proxied website with web servers in Los Angeles, the user might actually connect to a local reverse proxy server in Paris, which will then have to communicate with an origin server in L.A. The proxy server can then cache (or temporarily save) the response data. Subsequent Parisian users who browse the site will then get the locally cached version from the Parisian reverse proxy server, resulting in much faster performance. - **SSL encryption.** Encrypting and decrypting SSL (or TLS) communications for each client can be computationally expensive for an origin server. A reverse proxy can be configured to decrypt all incoming requests and encrypt all outgoing responses, freeing up valuable resources on the origin server. From fe0a23603066c24fa403c4a62b1fd0b6cb975e9b Mon Sep 17 00:00:00 2001 From: Denise Pena Date: Wed, 19 Feb 2025 14:43:00 -0600 Subject: [PATCH 06/10] Implemented review feedback & added note --- .../docs/fundamentals/concepts/how-cloudflare-works.mdx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index 4fe7eefe157fd57..8dfba0f8f711b49 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -17,10 +17,14 @@ The Domain Name System (DNS) is like the phonebook of the Internet and tells you If DNS is the phonebook of the Internet, the IP address is like a home address, and the domain name is the human-friendly name. -After you add a site to Cloudflare under a full DNS setup, Cloudflare becomes the primary authoritative DNS provider for your domain. As the authoritative DNS provider, Cloudflare responds to DNS queries for your domain, and you manage your domain's DNS records via the Cloudflare dashboard or API. +When you onboard your website or application to Cloudflare, Cloudflare becomes the primary authoritative DNS provider for your domain. This means Cloudflare responds to DNS queries for your domain, and you manage your domain's DNS records via the Cloudflare dashboard or API. A DNS query is like asking for directions to a place, and the DNS records are the source-of-truth for what exists where. DNS records live in authoritative [DNS servers](https://www.cloudflare.com/learning/dns/dns-server-types/) and provide information about a domain, such as the [IP addresses](https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/) of the servers that host the web content and services on that domain. With this information, Internet browsers know where to find a website or app, so they can render it for visitors using [HTTP](https://www.cloudflare.com/learning/ddos/glossary/hypertext-transfer-protocol-http/). +:::note +Cloudflare only becomes the primary authoritative DNS provider when you use the default, full DNS setup. For alternative options, refer to [DNS setups](/dns/zone-setups/). +::: + ## Cloudflare as a DNS provider From 05b8c70ffb7c493c6ab711f526ea53111b5c5868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denise=20Pe=C3=B1a?= <75506267+dcpena@users.noreply.github.com> Date: Wed, 19 Feb 2025 16:23:34 -0600 Subject: [PATCH 07/10] Apply suggestions from code review Co-authored-by: abstergail <115666354+abstergail@users.noreply.github.com> --- .../docs/fundamentals/concepts/how-cloudflare-works.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index 8dfba0f8f711b49..b9e98693dd54bb5 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -13,9 +13,9 @@ To optimize your website or web application, Cloudflare acts as a [CDN](https:// ## DNS explained -The Domain Name System (DNS) is like the phonebook of the Internet and tells your browser where a website's content lives. Each domain name–such as cloudflare.com–is mapped to an Internet Protocol (IP) address; the IP address is a numerical label assigned to a website that looks like `103.21.244.0`, for example. +The Domain Name System (DNS) acts as the Internet's phonebook, translating domain names (for example, `cloudflare.com`) into numerical Internet Protocol (IP) addresses (for example, `103.21.244.0`). -If DNS is the phonebook of the Internet, the IP address is like a home address, and the domain name is the human-friendly name. +The IP address is like a home address of where a website lives, and the domain name is the human-readable name. When you onboard your website or application to Cloudflare, Cloudflare becomes the primary authoritative DNS provider for your domain. This means Cloudflare responds to DNS queries for your domain, and you manage your domain's DNS records via the Cloudflare dashboard or API. @@ -32,7 +32,7 @@ When Cloudflare receives a DNS query for your domain, the response is determined If your [domain's status](/dns/zone-setups/reference/domain-status/) is active and the queried DNS record is set to `proxied`, Cloudflare responds with an [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/), instead of the actual IP address of the origin server as defined in your DNS table. -Your domain status is active when your nameservers are updated to point to Cloudflare and have been authenticated. The proxy status defines how Cloudflare treats queries for specific DNS records. The anycast IP address is used to distribute traffic amongst Cloudflare's network, which protects your website or app from [DDoS](https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/) and other attacks, while optimizing site speed. +Your domain status is active when your [nameservers are updated](/dns/nameservers/update-nameservers/) to point to Cloudflare and have been authenticated. The [proxy status](/dns/proxy-status/) defines how Cloudflare treats queries for specific DNS records. The [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/) is used to distribute traffic amongst Cloudflare's network, which protects your website or app from [DDoS](/learning/ddos/what-is-a-ddos-attack/) and other attacks, while optimizing site speed. ## Cloudflare as a reverse proxy From 17fca670ec5ffaab40bbef733621ff21f1d603b0 Mon Sep 17 00:00:00 2001 From: Denise Pena Date: Wed, 19 Feb 2025 16:50:21 -0600 Subject: [PATCH 08/10] moved content and note --- .../docs/fundamentals/concepts/how-cloudflare-works.mdx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index b9e98693dd54bb5..53cf7b349f95272 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -17,17 +17,16 @@ The Domain Name System (DNS) acts as the Internet's phonebook, translating domai The IP address is like a home address of where a website lives, and the domain name is the human-readable name. -When you onboard your website or application to Cloudflare, Cloudflare becomes the primary authoritative DNS provider for your domain. This means Cloudflare responds to DNS queries for your domain, and you manage your domain's DNS records via the Cloudflare dashboard or API. - A DNS query is like asking for directions to a place, and the DNS records are the source-of-truth for what exists where. DNS records live in authoritative [DNS servers](https://www.cloudflare.com/learning/dns/dns-server-types/) and provide information about a domain, such as the [IP addresses](https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/) of the servers that host the web content and services on that domain. With this information, Internet browsers know where to find a website or app, so they can render it for visitors using [HTTP](https://www.cloudflare.com/learning/ddos/glossary/hypertext-transfer-protocol-http/). +## Cloudflare as a DNS provider + +When you onboard your website or application to Cloudflare, Cloudflare becomes the primary authoritative DNS provider for your domain. This means Cloudflare responds to DNS queries for your domain, and you manage your domain's DNS records via the Cloudflare dashboard or API. + :::note Cloudflare only becomes the primary authoritative DNS provider when you use the default, full DNS setup. For alternative options, refer to [DNS setups](/dns/zone-setups/). ::: - -## Cloudflare as a DNS provider - When Cloudflare receives a DNS query for your domain, the response is determined by the configuration [set in your DNS table](/dns/manage-dns-records/how-to/create-dns-records/), including the [type of the record](/dns/manage-dns-records/reference/dns-record-types/), the record's [proxy eligibility](/dns/proxy-status/limitations/#proxy-eligibility), and its [proxy status](/dns/proxy-status/#proxied-records). If your [domain's status](/dns/zone-setups/reference/domain-status/) is active and the queried DNS record is set to `proxied`, Cloudflare responds with an [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/), instead of the actual IP address of the origin server as defined in your DNS table. From 71252b6c83e458afa05705fe5a711e671381294b Mon Sep 17 00:00:00 2001 From: Denise Pena Date: Fri, 21 Feb 2025 14:18:51 -0600 Subject: [PATCH 09/10] Implenting Rebecca's feedback --- .../fundamentals/concepts/how-cloudflare-works.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index 53cf7b349f95272..e73c3066b68a2b3 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -27,11 +27,9 @@ When you onboard your website or application to Cloudflare, Cloudflare becomes t Cloudflare only becomes the primary authoritative DNS provider when you use the default, full DNS setup. For alternative options, refer to [DNS setups](/dns/zone-setups/). ::: -When Cloudflare receives a DNS query for your domain, the response is determined by the configuration [set in your DNS table](/dns/manage-dns-records/how-to/create-dns-records/), including the [type of the record](/dns/manage-dns-records/reference/dns-record-types/), the record's [proxy eligibility](/dns/proxy-status/limitations/#proxy-eligibility), and its [proxy status](/dns/proxy-status/#proxied-records). +If your [domain's status](/dns/zone-setups/reference/domain-status/) is active and the queried DNS record is set to `proxied`, Cloudflare responds with an [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/), instead of the origin IP address defined in your DNS table. -If your [domain's status](/dns/zone-setups/reference/domain-status/) is active and the queried DNS record is set to `proxied`, Cloudflare responds with an [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/), instead of the actual IP address of the origin server as defined in your DNS table. - -Your domain status is active when your [nameservers are updated](/dns/nameservers/update-nameservers/) to point to Cloudflare and have been authenticated. The [proxy status](/dns/proxy-status/) defines how Cloudflare treats queries for specific DNS records. The [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/) is used to distribute traffic amongst Cloudflare's network, which protects your website or app from [DDoS](/learning/ddos/what-is-a-ddos-attack/) and other attacks, while optimizing site speed. +Your domain status is active when your [nameservers are updated](/dns/nameservers/update-nameservers/) to point to Cloudflare and have been authenticated. The [proxy status](/dns/proxy-status/) defines how Cloudflare treats queries for specific DNS records. The [anycast IP address](/fundamentals/concepts/cloudflare-ip-addresses/) is used to distribute traffic amongst Cloudflare's network, which protects your website or app from [DDoS](https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/) and other attacks, while optimizing site speed. ## Cloudflare as a reverse proxy @@ -39,6 +37,8 @@ A reverse proxy is a network of servers that sits in front of web servers and ei ![The flow of a request from a server through Cloudflare to the origin server when Cloudflare is a reverse proxy.](~/assets/images/fundamentals/reverse-proxy.png) +When Cloudflare receives a DNS query for your domain, the response is determined by the configuration [set in your DNS table](/dns/manage-dns-records/how-to/create-dns-records/), including the [type of the record](/dns/manage-dns-records/reference/dns-record-types/), the record's [proxy eligibility](/dns/proxy-status/limitations/#proxy-eligibility), and its [proxy status](/dns/proxy-status/#proxy-eligibility). + When DNS records in your DNS table have a `proxied` status, the record's HTTP/HTTPS traffic will route through Cloudflare on its way between the client and the origin server. If the domain's status is active, all HTTP/HTTPS requests for proxied DNS records route through Cloudflare. Using Cloudflare as a reverse proxy has several benefits, including: @@ -46,4 +46,4 @@ Using Cloudflare as a reverse proxy has several benefits, including: - **Load balancing** A reverse proxy can provide a load balancing solution which distributes incoming traffic evenly among different servers to prevent any single server from becoming overloaded. In the event that a server fails completely, other servers can step up to handle the traffic. - **Protection from attacks.** With a reverse proxy in place, a web site or service never needs to reveal the IP address of their origin servers, which makes it much harder for attackers to leverage a targeted attack against them, such as a DDoS attack. Instead the attackers will only be able to target the reverse proxy, such as Cloudflare's CDN, which will have tighter security and more resources to fend off a cyber attack. - **Caching.** A reverse proxy can also cache content, resulting in faster performance. For example, if a user in Paris visits a reverse-proxied website with web servers in Los Angeles, the user might actually connect to a local reverse proxy server in Paris, which will then have to communicate with an origin server in L.A. The proxy server can then cache (or temporarily save) the response data. Subsequent Parisian users who browse the site will then get the locally cached version from the Parisian reverse proxy server, resulting in much faster performance. -- **SSL encryption.** Encrypting and decrypting SSL (or TLS) communications for each client can be computationally expensive for an origin server. A reverse proxy can be configured to decrypt all incoming requests and encrypt all outgoing responses, freeing up valuable resources on the origin server. +- **SSL encryption.** SSL/TLS is essential. Without an SSL/TLS certificate, your visitors will find a warning on their browser stating your website or application is not secure. However, encrypting and decrypting SSL (or TLS) communications for each client can be computationally expensive for an origin server. A reverse proxy can be configured to decrypt all incoming requests and encrypt all outgoing responses, freeing up valuable resources on the origin server. From 8d5576e0ae989f2b879338de31b16f40c27a8e3e Mon Sep 17 00:00:00 2001 From: Denise Pena Date: Fri, 21 Feb 2025 14:26:23 -0600 Subject: [PATCH 10/10] Missed this feedback edit --- src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx index e73c3066b68a2b3..0ca9c1631a1c727 100644 --- a/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx +++ b/src/content/docs/fundamentals/concepts/how-cloudflare-works.mdx @@ -21,7 +21,7 @@ A DNS query is like asking for directions to a place, and the DNS records are th ## Cloudflare as a DNS provider -When you onboard your website or application to Cloudflare, Cloudflare becomes the primary authoritative DNS provider for your domain. This means Cloudflare responds to DNS queries for your domain, and you manage your domain's DNS records via the Cloudflare dashboard or API. +When you onboard your website or application to Cloudflare, Cloudflare becomes the primary authoritative DNS provider for your domain. As this primary authoritative DNS provider, Cloudflare responds to DNS queries for your domain, and you manage your domain's DNS records via the Cloudflare dashboard or API. :::note Cloudflare only becomes the primary authoritative DNS provider when you use the default, full DNS setup. For alternative options, refer to [DNS setups](/dns/zone-setups/).