diff --git a/account/abuse-procedure.mdx b/account/abuse-procedure.mdx new file mode 100644 index 00000000..8e35bdeb --- /dev/null +++ b/account/abuse-procedure.mdx @@ -0,0 +1,90 @@ +--- +title: Abuse Procedure +description: How bunny.net handles abuse reports for content hosted or delivered through our platform. +--- + +bunny.net is a platform service provider acting as a passive distributor of third-party information. We are not a publisher and do not moderate content except as set out in our published procedures (updated from time to time). bunny.net takes no responsibility to our Customers or users for data and content uploaded by Customers or third parties, and is not liable for that content. + +We take abuse reports seriously while giving customers a fair opportunity to review and address complaints. This procedure outlines how we handle general abuse reports, including how we verify complaints and how customers can respond. + + + We operate on a good-faith, voluntary basis, aiming to meet industry best practice while taking into account relevant national and international regulatory guidance and applicable legislation. We have no obligation to respond to allegations of abuse or to take action, and we are not liable for our acts or omissions other than as set out in our [Terms of Service](https://bunny.net/tos). We reserve the right to amend or withdraw this procedure at any time. + + +## What is abuse? + +We consider the following to be abuse, or complaints of alleged abuse: + +- Misinformation (sometimes known as "fake news") +- Violation of our Terms of Service (such as publishing illegal content, or harmful activity such as hacking, phishing, or malware) +- Violent threats and harassment +- Child Sexual Abuse Material (CSAM) + +Misinformation may be described as verifiably false or misleading information created, presented, and disseminated for economic gain or to intentionally deceive the public, and which may cause public harm. + +We do **not** consider the following to be abuse: + +- Disagreements over political or news articles +- Attempts to silence commentary or alternative points of view +- Defamatory, aggressive, or insulting content +- Reviews of service providers or products + +## Our process + +Reports can be submitted via our [abuse form](https://bunny.net/abuse/). + +### Receiving and reviewing the report + +When we receive an abuse report related to content hosted or delivered through our platform, our team reviews it to determine: + +- Whether the allegation is valid and specific (vague or generic complaints may require further clarification) +- Whether the content violates applicable laws or our Acceptable Use Policy + +We do not take immediate action unless the content is clearly illegal (such as phishing, malware, or CSAM). For all other cases, we first notify the customer and allow them to review the allegations. + +### Notifying the customer + +Once we verify the report, we notify the customer responsible for the content by email, and the report is visible in the customer dashboard. The notice includes: + +- A summary of the allegation, including the details provided by the reporter +- A request to review the report and take action if necessary +- A response timeline, typically 48 hours for all abuse reports except those related to misinformation + +Until the response period has passed, no action is taken on the content. We do not, as a matter of routine, provide the customer with personal data relating to the complainant. + +### Customer response options + +- **Address the report:** Modify or remove the content, or provide additional information to clarify the situation. +- **Dispute the report:** Explain why the content should not be removed, and share any supporting documentation (such as licenses or legal permissions). + +We review the response and, if necessary, work with the customer to ensure compliance with applicable regulations or our Acceptable Use Policy. + +### No immediate suspension or blocking + +Unlike DMCA or CSAM reports, we do not suspend Pull Zones or remove content for general abuse allegations. Our goal is to work with the customer to verify and resolve the issue. However, if a customer fails to respond in time, or the content clearly violates our policies, we may take further action. + +### Repeat offenses + +If a customer repeatedly receives abuse reports and does not take appropriate action, we may require faster response times for future reports, restrict access to certain services or features, or suspend or terminate the account. We always attempt to work with the customer first before escalating. + +## Frequently asked questions + +**Will my Pull Zone or content be suspended for fake news or misinformation?** + +No. We do not suspend Pull Zones or remove content solely based on abuse reports alleging fake news or misinformation. + +**Will my Pull Zone or content be suspended immediately?** + +No. We do not suspend Pull Zones or remove content immediately for general abuse reports. We give customers an opportunity to review and address the complaint first. + +**What happens if I don't respond to an abuse report?** + +If no response is received within the given timeframe, we may take further action, including potential suspension of the specific URL. This depends on the type of abuse report. + +**Can I dispute an abuse report?** + +Yes. If you believe a report is incorrect or invalid, submit a response explaining why, along with supporting evidence. bunny.net will review the response and decide, at its own discretion and with no liability, whether to uphold the allegation or reinstate the content in whole or in part. + +**What types of abuse reports require immediate action?** + +Reports related to illegal activity (such as CSAM, phishing, or malware) may require immediate content blocking and further escalation. All other reports follow this procedure. diff --git a/account/account-suspended.mdx b/account/account-suspended.mdx new file mode 100644 index 00000000..66ad06e8 --- /dev/null +++ b/account/account-suspended.mdx @@ -0,0 +1,49 @@ +--- +title: Account Disabled or Suspended +description: Why a bunny.net account becomes disabled or suspended, and how to resolve each state. +--- + +If you see a message that your account is disabled or suspended, this guide explains the possible reasons and how to resolve them. There are two distinct states. + +## Temporarily disabled + +This is usually a temporary status that you can resolve by addressing the underlying issue. + +**Common causes:** + +- **Trial expired:** Trial accounts are automatically disabled when the trial period ends, unless you top up your account. This prevents unexpected charges. +- **Negative balance:** If charges accrue without successful payment for several days, the account may be disabled until the outstanding balance is cleared. + +**Resolution:** + +1. Log in to your account. You'll be guided through recharging or resolving your balance. +2. If you need help, [contact support](https://bunny.net/contact/). + +## Suspended + +A suspension is more serious. It can result from automated risk detection or a manual review following a violation of our [Terms of Service](https://bunny.net/tos) or [Acceptable Use Policy](https://bunny.net/acceptable-use/). + +**Common causes:** + +- **Signup risk detected**, based on signals such as: + - Use of VPNs, proxies, or anonymized IP addresses during signup + - Mismatches between IP address and billing information + - Registrations from regions flagged as high-risk by our payment processor +- **Policy violations**, such as: + - Attempted fraud or abuse of platform resources + - Hosting prohibited content or engaging in restricted activities + +**Resolution:** + +1. [Contact support](https://bunny.net/contact/) to request details about the suspension. +2. Be prepared to provide identification, account verification, or additional context to assist the review. + +Depending on the nature and severity of the issue, some accounts suspended for policy violations may not be reinstated. + + + Accounts created using anonymizing services such as VPNs or proxies may be permanently restricted. If your account was suspended under these conditions, you may need to create a new account using a different email address and a direct, non-anonymized connection. + + +## Need help? + +If you're unsure which state your account is in or what to do next, [contact support](https://bunny.net/contact/). We can help review your account status and determine the right resolution. diff --git a/account/dmca-procedure.mdx b/account/dmca-procedure.mdx new file mode 100644 index 00000000..643c24a8 --- /dev/null +++ b/account/dmca-procedure.mdx @@ -0,0 +1,40 @@ +--- +title: DMCA Procedure +description: How bunny.net handles DMCA and copyright takedown requests for customer content. +--- + +bunny.net takes DMCA and copyright requests seriously, protecting intellectual property rights while giving customers a fair chance to respond. This page outlines how we handle DMCA and copyright notices related to customer content. + +## Receiving and verifying the report + +When we receive a DMCA or copyright report, we first verify its authenticity. Our team reviews the report to confirm it meets the legal requirements of a valid claim, ensuring it is not fraudulent and that it pertains to content hosted on our platform. + +## Notifying the customer + +Once we verify a claim, we notify the customer responsible for the content. Our support team sends an official notice by email, and it is also available in your dashboard. The notice includes the details of the report and clear instructions on the next steps. + +Customers have **48 hours** to respond from the time the email is sent, with two options: + +- **Option 1: Remove the content.** If you believe the claim is valid, remove the infringing content from your account. In the dashboard, open the Abuse Case to verify the content has been removed. Once confirmed, the case is marked resolved. +- **Option 2: File a counter-claim.** If you believe the report is incorrect or invalid, file a counter-claim within the same 48-hour window. A counter-claim is a legal statement contesting the validity of the request, and it triggers the next steps in the resolution process. + +## Blocking the content + +If no action is taken within the initial 48 hours (the content is neither removed nor a counter-claim filed), the content is blocked and the Pull Zone may be suspended. The content stays inaccessible to the public until the matter is resolved. + +When a counter-claim is submitted, the content stays blocked while the reporter is notified. The reporter has **10 to 14 days** to respond or initiate legal action. If they don't within that window, we unblock the content after the 14-day period. + +## Illegal or highly sensitive content + +Some content types are treated differently from standard claims: + +- **Illegal content** (such as phishing or malware): We block it immediately. The DMCA process does not apply, and the content remains blocked pending further investigation or legal action. +- **Sports streams:** Because of copyright and broadcasting rights, we immediately block content reported as an unlicensed sports stream. To unblock it, you must provide proof that you are licensed to stream the content. Without proof, it remains blocked. + +## Restoring content after a takedown + +Once a valid takedown has occurred, you may not restore or re-upload the removed content, whether under the same name or a different one. If content is repeatedly re-uploaded after being taken down, we will issue further notices and require its removal again. Continued re-uploads may result in suspension of the entire account, to ensure compliance and protect intellectual property rights. + +## After a report is filed + +Once a report is filed and the content is blocked or a counter-claim is submitted, the next steps are governed by legal requirements. If the reporter does not respond or take legal action within the 10 to 14 day window after a counter-claim, the content is unblocked and restored. If legal action is initiated, the content remains blocked until the dispute is resolved. diff --git a/cdn/connectivity.mdx b/cdn/connectivity.mdx index 088cb677..05e1bf2f 100644 --- a/cdn/connectivity.mdx +++ b/cdn/connectivity.mdx @@ -59,6 +59,28 @@ On the Standard Network, IPv6 origin connectivity is provided on a best-effort b If guaranteed IPv6 connectivity to your origin is required, enabling Origin Shield routes all origin traffic through a Volume Network location with native dual-stack support. +## 502 and 504 errors + +A `502 Bad Gateway` means an edge server received an invalid response from your origin. A `504 Gateway Timeout` means the origin didn't respond in time. When the origin is unreachable, edge servers serve from cache where possible and only return the error when the file isn't cached. Common causes: + +- **Origin offline:** The most common cause. Edge servers can't connect to your origin and the file isn't in cache. +- **Firewall blocking edge servers:** Because the CDN proxies all your traffic, origin firewalls or security software can mistake the volume of edge requests for an attack and block them. Whitelist the [edge server IP list](https://api.bunny.net/system/edgeserverlist) ([IPv6](https://api.bunny.net/system/edgeserverlist/ipv6)) and update it periodically as the network changes. +- **Network congestion:** A rare, transient routing problem between an edge location and a distant origin. +- **Timeouts:** By default Bunny waits 10 seconds for a TCP connection and 60 seconds for the origin to start sending data. Immediate 502s usually mean an origin firewall or WAF is rejecting the connection. These timeouts are configurable via Safehop. + +Use the [bunny.net diagnostic tools](https://tools.bunny.net/) to test latency, traceroutes, and HTTP requests from over 120 locations and see whether specific regions are blocked or the origin is slow. If you've ruled out the causes above, contact [support@bunny.net](mailto:support@bunny.net). + +## Origin redirect loops + +If your CDN URLs return a 301 redirect back to your own domain, the origin is issuing that redirect and the CDN is forwarding it. Bunny CDN never returns a 301 on its own, except for hotlink protection. Check the following: + +- **Origin URL host:** Make sure the Pull Zone Origin URL matches the exact domain your site serves from, including the `www` or non-`www` version. A mismatch triggers your origin's canonical redirect. +- **Origin URL protocol:** If your server forces HTTPS, set the Origin URL to `https://`. An `http://` Origin URL against an HTTPS-only origin produces a redirect. +- **Origin redirect or rewrite rules:** Check your server configuration for redirect or rewrite rules affecting your assets. +- **Hotlink protection:** If enabled, whitelist every domain the CDN serves (both `www` and non-`www`), with no protocol or slashes in the hostname field. + +After any change, purge the full Pull Zone cache and wait for it to sync, since cached 301s persist on the edge. + ## CDN Acceleration and IPv6 Origins bunny.net's CDN Acceleration feature supports dual-stack origin connectivity when used with Bunny DNS. diff --git a/cdn/integrations/cms/discourse.mdx b/cdn/integrations/cms/discourse.mdx index dd564f6b..6540a0e5 100644 --- a/cdn/integrations/cms/discourse.mdx +++ b/cdn/integrations/cms/discourse.mdx @@ -1,5 +1,41 @@ --- title: Discourse description: Speed up your Discourse forum with bunny.net CDN for faster page loads and improved performance. -url: https://support.bunny.net/hc/en-us/articles/360000549272-How-to-speed-up-Discourse-with-BunnyCDN --- + +Discourse has built-in CDN support. This guide walks you through pointing it at Bunny CDN. + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and open the **Add Pull Zone** page. Choose a name for your zone, then set the origin URL to your Discourse forum (for example, `discourse.example.com`). + + + ![Creating a Pull Zone for Discourse](/images/cdn/integrations/cms/discourse-add-zone.png) + + + Select a pricing tier and click **Add Pull Zone**. For more detail, see [How to create your first Pull Zone](/cdn/quickstart). + + + Open your `app.yml` configuration file and find the following lines: + + ```yaml + ## the origin pull CDN address for this Discourse instance + DISCOURSE_CDN_URL: https://discourse-cdn.example.com + ``` + + If they aren't present, add them below the other `DISCOURSE_` variables. Replace the `DISCOURSE_CDN_URL` value with your Pull Zone hostname. + + + ![Setting DISCOURSE_CDN_URL in app.yml](/images/cdn/integrations/cms/discourse-cdn-url.png) + + + + Apply the new configuration by rebuilding the container: + + ```bash + ./launcher rebuild app + ``` + + Once the rebuild finishes, your forum is served through Bunny CDN. To confirm everything is working, see [Verify your configuration](/cdn/verify-configuration). + + diff --git a/cdn/integrations/cms/drupal.mdx b/cdn/integrations/cms/drupal.mdx index ab063cd2..db65b0a3 100644 --- a/cdn/integrations/cms/drupal.mdx +++ b/cdn/integrations/cms/drupal.mdx @@ -1,5 +1,50 @@ --- title: Drupal description: Integrate bunny.net CDN with your Drupal website for faster content delivery and improved performance. -url: https://support.bunny.net/hc/en-us/articles/360018510091-How-to-speed-up-your-Drupal-website-with-BunnyCDN --- + +Drupal supports CDN delivery through the [CDN module](https://www.drupal.org/project/cdn), which rewrites your asset URLs to serve them through Bunny CDN. This guide walks you through installing and configuring it. + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone with your Drupal site as the origin URL. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + Match the protocol of your site exactly. If your Drupal site runs on HTTPS, enable HTTPS on the Pull Zone; if it runs on HTTP only, leave HTTPS disabled. A mismatch will cause errors. + + + You can set a long Cache-Control time for Drupal. The CDN module serves updated elements from new URLs, so changes appear immediately without waiting for the cache to expire. + + + + Download the latest `.tar.gz` release of the [Drupal CDN module](https://www.drupal.org/project/cdn) and copy its download URL. You'll need SSH or FTP access to your site. + + In the Drupal admin, select **Manage**, then **Extend**, then **Install new module**. + + + ![Drupal Extend page with the Install new module button](/images/cdn/integrations/cms/drupal-extend-install-module.png) + + + Paste the `.tar.gz` URL, click **Install**, and provide your SSH/FTP credentials when prompted. When the installer finishes, click **Enable newly added modules**. + + Scroll to the **Web Services** section, select the **CDN** and **CDN UI** modules, then click **Install**. + + + ![Enabling the CDN and CDN UI modules](/images/cdn/integrations/cms/drupal-enable-cdn-modules.png) + + + + Go to **Manage → Configuration**, scroll to the bottom, and click **CDN Integration**. On the **Status** tab, make sure **Serve files from a CDN** is enabled. + + + ![Enabling Serve files from a CDN](/images/cdn/integrations/cms/drupal-cdn-status.png) + + + Open the **Mapping** tab, select **Simple** mapping, choose **Serve all files**, and enter your Pull Zone hostname in the field on the right. Click **Save configuration**. + + + ![Configuring the CDN mapping](/images/cdn/integrations/cms/drupal-cdn-mapping.png) + + + + +Your Drupal site now serves static assets through Bunny CDN. diff --git a/cdn/integrations/cms/expressionengine.mdx b/cdn/integrations/cms/expressionengine.mdx index 442d8aa9..5925f58a 100644 --- a/cdn/integrations/cms/expressionengine.mdx +++ b/cdn/integrations/cms/expressionengine.mdx @@ -1,5 +1,35 @@ --- title: ExpressionEngine description: Configure bunny.net CDN with ExpressionEngine to accelerate your website and optimize asset delivery. -url: https://support.bunny.net/hc/en-us/articles/360019199051-How-to-speed-up-your-ExpressionEngine-website-with-BunnyCDN --- + +Setting up Bunny CDN with ExpressionEngine takes only a single line of configuration plus a template change. + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone with your ExpressionEngine site as the origin URL. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + You'll need SSH or FTP access to your web server. Open the `index.php` file in your site's root and find this line: + + ```php + // $assign_to_config['global_vars'] = array(); + ``` + + Uncomment it and define a global variable for your CDN URL, replacing the hostname with your Pull Zone: + + ```php + $assign_to_config['global_vars'] = array('cdn_url' => 'https://YOURZONE.b-cdn.net/'); + ``` + + + Update your templates to reference the new `{cdn_url}` variable when linking to static resources. For example: + + ```text + {cdn_url}uploads/image.jpg + ``` + + + Load your site and confirm that the URLs for your static content now include your Pull Zone hostname. Once they do, ExpressionEngine is serving assets through Bunny CDN. + + diff --git a/cdn/integrations/cms/joomla.mdx b/cdn/integrations/cms/joomla.mdx new file mode 100644 index 00000000..4f22311b --- /dev/null +++ b/cdn/integrations/cms/joomla.mdx @@ -0,0 +1,43 @@ +--- +title: Joomla +description: Speed up your Joomla website with bunny.net CDN using the CDN for Joomla plugin. +--- + +Joomla can serve assets through Bunny CDN using the [CDN for Joomla plugin](https://www.regularlabs.com/extensions/cdnforjoomla) by Regular Labs, which rewrites your content URLs to serve them through the CDN. + + + The free version of the CDN for Joomla plugin only supports HTTP URLs. To use HTTPS URLs, you'll need the paid version. + + + + + Download the plugin from the [Regular Labs site](https://www.regularlabs.com/extensions/cdnforjoomla). In your Joomla admin, go to **Extensions → Manage → Install**, then upload the ZIP file you downloaded. + + + ![Installing the CDN for Joomla plugin](/images/cdn/integrations/cms/joomla-install-plugin.png) + + + + Go to **Extensions → Manage → Manage**, use the search to find the CDN plugin, then click it to open its configuration page and switch to the **Setup** tab. + + + ![Finding the CDN plugin](/images/cdn/integrations/cms/joomla-find-plugin.png) + + + + In your [bunny.net dashboard](https://dash.bunny.net), create a new Pull Zone with a name, set the origin URL to your website, choose your tier, and click **Add Pull Zone**. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + ![Creating a Pull Zone](/images/cdn/integrations/cms/joomla-create-pull-zone.png) + + + + Back on the plugin's **Setup** tab, enter your Pull Zone hostname (the `b-cdn.net` hostname) in the **CDN Domain** field, then click **Save**. + + + ![Setting the CDN Domain](/images/cdn/integrations/cms/joomla-cdn-domain.png) + + + + +Your Joomla site now serves content through Bunny CDN. diff --git a/cdn/integrations/cms/magento.mdx b/cdn/integrations/cms/magento.mdx index 042f5dc5..b38e6d01 100644 --- a/cdn/integrations/cms/magento.mdx +++ b/cdn/integrations/cms/magento.mdx @@ -1,5 +1,43 @@ --- title: Magento description: Integrate bunny.net CDN with your Magento store for faster page loads and optimized e-commerce performance. -url: https://support.bunny.net/hc/en-us/articles/360001944171-How-to-speed-up-your-Magento-website-with-BunnyCDN --- + +This guide walks you through serving your Magento store's static and media files through Bunny CDN in four steps. + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone with your Magento store as the origin URL. Match the protocol (HTTP or HTTPS) of your site exactly. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + ![Creating a Pull Zone for Magento](/images/cdn/integrations/cms/magento-add-pull-zone.png) + + + + Open your Pull Zone's **Headers** settings and add the `html` and `json` extensions. This is required, otherwise your Magento admin interface won't work correctly. + + + ![Adding CORS headers to the Pull Zone](/images/cdn/integrations/cms/magento-cors-headers.png) + + + + Log in to your Magento admin panel and go to **Stores → Configuration → General → Web**. + + + ![Magento Web configuration](/images/cdn/integrations/cms/magento-web-config.png) + + + Open the **Base URLs** tab and enter your Pull Zone hostname in both **Base URL for Static View Files** and **Base URL for User Media Files**, including the `/static/` and `/media/` subfolders respectively. + + + ![Setting the Base URLs](/images/cdn/integrations/cms/magento-base-urls.png) + + + Repeat the same values in the **Base URLs (Secure)** section, using the `https://` version of the URL to avoid connectivity issues. Click **Save Config**. + + + Flush your Magento cache as prompted by the settings dashboard. + + + +Your Magento store is now serving static and media files through Bunny CDN. diff --git a/cdn/integrations/cms/prestashop.mdx b/cdn/integrations/cms/prestashop.mdx index cc80883e..95bd6b97 100644 --- a/cdn/integrations/cms/prestashop.mdx +++ b/cdn/integrations/cms/prestashop.mdx @@ -1,5 +1,42 @@ --- title: PrestaShop description: Speed up your PrestaShop store with bunny.net CDN for faster product pages and improved checkout performance. -url: https://support.bunny.net/hc/en-us/articles/360016351371-How-to-speed-up-your-PrestaShop-store-with-BunnyCDN --- + +PrestaShop includes built-in CDN settings, so connecting it to Bunny CDN is straightforward. + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone with your PrestaShop store as the origin URL. Match the protocol (HTTP or HTTPS) of your site exactly. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + Log in to your PrestaShop admin panel and go to **Advanced Parameters → Performance**. + + + ![PrestaShop Advanced Parameters menu](/images/cdn/integrations/cms/prestashop-performance-menu.png) + + + + In the **CCC (Combine, Compress and Cache)** section, set **Smart cache for CSS** and **Smart cache for JavaScript** to **Yes**. + + + ![Configuring the CCC section](/images/cdn/integrations/cms/prestashop-ccc.png) + + + + On older versions of PrestaShop, this section shows checkboxes instead of dropdowns. In that case, select **Use CCC for CSS** and **Use CCC for JavaScript**. + + + Click **Save**. + + + Scroll down to the **Media Servers** section and enter your Pull Zone hostname in the **Media server #1** field. Click **Save**. + + + ![Configuring Media server #1](/images/cdn/integrations/cms/prestashop-media-server.png) + + + + If caching is enabled for your store, click **Clear cache** at the top of the page. Your pages will now be served through Bunny CDN. + + diff --git a/cdn/integrations/cms/shopware.mdx b/cdn/integrations/cms/shopware.mdx index d03a11fe..06ad45ec 100644 --- a/cdn/integrations/cms/shopware.mdx +++ b/cdn/integrations/cms/shopware.mdx @@ -1,5 +1,70 @@ --- title: Shopware description: Configure bunny.net CDN with Shopware to accelerate your e-commerce store and improve customer experience. -url: https://support.bunny.net/hc/en-us/articles/360018577551-How-to-speed-up-your-Shopware-site-with-BunnyCDN --- + +Shopware can serve media through Bunny CDN using a community-built adapter that uploads your content to a Bunny Storage zone and delivers it through a connected Pull Zone. + + + The [Shopware adapter](https://github.com/tinect/TinectMediaBunnycdn) is built and maintained by the community, not by bunny.net. + + + + + The adapter uploads your media to a Bunny [Storage Zone](/storage), which is then delivered through a Pull Zone that uses the Storage Zone as its origin. Set up both before configuring Shopware. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + Download the latest `TinectMediaBunnycdn.zip` from the adapter's [GitHub releases page](https://github.com/tinect/TinectMediaBunnycdn/releases). + + In Shopware, open **Configuration → Plugin Manager**. + + + ![Opening the Shopware Plugin Manager](/images/cdn/integrations/cms/shopware-plugin-manager.png) + + + Go to **Installed**, click **Upload Plugin**, and select the ZIP file you downloaded. + + + ![Uploading the plugin ZIP file](/images/cdn/integrations/cms/shopware-upload-plugin.png) + + + The plugin appears under **Uninstalled**. Click the green **+** to install it. + + + ![Installing the uploaded plugin](/images/cdn/integrations/cms/shopware-enable-plugin.png) + + + Once installed, the plugin is **Inactive**. Click the pencil icon next to its name, then click **Activate**. If prompted to clear caches, confirm. + + + ![Activating the plugin](/images/cdn/integrations/cms/shopware-activate-plugin.png) + + + + You'll need SSH or FTP access to edit a PHP file. In your Shopware install directory, open `config.php` and append the following to the configuration array: + + ```php + 'cdn' => [ + 'backend' => 'bunnycdn', + 'adapters' => [ + 'bunnycdn' => [ + 'type' => 'bunnycdn', + 'mediaUrl' => 'https://PULLZONE.b-cdn.net/', + 'apiUrl' => 'https://storage.bunnycdn.com/STORAGEZONENAME/', + 'apiKey' => 'secret-api-key', + ], + ], + ], + ``` + + Replace `PULLZONE` with your Pull Zone hostname, `STORAGEZONENAME` with your Storage Zone name, and `apiKey` with the password from your Storage Zone's **FTP & API Access** page. + + Finally, upload your existing local media to the Storage Zone: + + ```bash + bin/console sw:media:migrate --from=local --to=bunnycdn + ``` + + + +Your Shopware store now serves media through Bunny CDN. diff --git a/cdn/integrations/cms/typo3.mdx b/cdn/integrations/cms/typo3.mdx index df76168e..b33a8a23 100644 --- a/cdn/integrations/cms/typo3.mdx +++ b/cdn/integrations/cms/typo3.mdx @@ -1,5 +1,59 @@ --- title: Typo3 description: Integrate bunny.net CDN with your TYPO3 website for faster content delivery and improved performance. -url: https://support.bunny.net/hc/en-us/articles/360018879551-How-to-speed-up-your-Typo3-website-with-BunnyCDN --- + +TYPO3 can serve assets through Bunny CDN using the [Content Replacer extension](https://extensions.typo3.org/extension/replacer/), which rewrites the content URLs on your site. This guide walks you through the setup. + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone with your TYPO3 site as the origin URL. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + Match the protocol of your site exactly. If your TYPO3 site runs on HTTPS, enable HTTPS on the Pull Zone; if it runs on HTTP only, leave HTTPS disabled. A mismatch will cause errors. + + + If your TYPO3 install uses Composer mode, install the extension from the command line: + + ```bash + composer req jweiland/replacer + ``` + + + ![Installing the Content Replacer extension with Composer](/images/cdn/integrations/cms/typo3-composer-install.png) + + + Otherwise, install it through the **Extension Manager** in the TYPO3 web interface. + + + Go to **Template**, select the root page, enable **Modify**, and edit the entire template record. + + + ![Editing the TYPO3 template record](/images/cdn/integrations/cms/typo3-edit-template.png) + + + Scroll to the **Setup** box and paste the following, replacing `YOURZONE.b-cdn.net` with your Pull Zone hostname: + + ```typoscript + config.tx_ja_replacer { + search { + 1 = typo3temp/ + 2 = fileadmin/ + 3 = typo3conf/ + } + replace { + 1 = https://YOURZONE.b-cdn.net/typo3temp/ + 2 = https://YOURZONE.b-cdn.net/fileadmin/ + 3 = https://YOURZONE.b-cdn.net/typo3conf/ + } + } + ``` + + Click **Save**, then select the lightning bolt and click **Flush all caches**. + + + ![Flushing all caches in TYPO3](/images/cdn/integrations/cms/typo3-flush-caches.png) + + + + +Your TYPO3 site now serves static assets through Bunny CDN. diff --git a/cdn/integrations/storage/amazon-s3.mdx b/cdn/integrations/storage/amazon-s3.mdx index 21c74d35..e5fa0ff7 100644 --- a/cdn/integrations/storage/amazon-s3.mdx +++ b/cdn/integrations/storage/amazon-s3.mdx @@ -1,5 +1,43 @@ --- title: Amazon S3 description: Use bunny.net CDN as a caching layer for Amazon S3 to accelerate file delivery and reduce origin costs. -url: https://support.bunny.net/hc/en-us/articles/360000335451-How-to-speed-up-your-Amazon-S3-file-delivery-with-BunnyCDN --- + +Bunny CDN caches files from your Amazon S3 bucket and delivers them from a global edge network, speeding up delivery and reducing egress costs. This guide walks you through the setup in a few steps. + + + Prefer to keep your files on bunny.net? [Bunny Storage](/storage) is globally replicated object storage with tight CDN integration, and it offers an [S3-compatible API](/storage/s3) (currently in beta). + + + + + If you don't already have a bucket, sign in to the [AWS Management Console](https://console.aws.amazon.com/s3/), click **Create bucket**, and follow the prompts (see [Amazon's guide](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) for details). Upload a file and give it public-read permissions. + + + ![Creating an Amazon S3 bucket](/images/cdn/integrations/storage/s3-create-bucket.png) + + + + Click the uploaded file to open its details, which include the public link. Copy only the first part of the link, the hostname and bucket path, for example `https://s3-eu-west-1.amazonaws.com/your-bucket/`. Don't include the file name. + + + ![Getting the S3 object URL](/images/cdn/integrations/storage/s3-get-url.png) + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone. Give it a name (this becomes your CDN hostname) and paste the URL from the previous step into the **Origin URL** field, then choose your pricing tiers and click **Add Pull Zone**. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + ![Adding a Pull Zone with the S3 bucket as origin](/images/cdn/integrations/storage/s3-add-pull-zone.png) + + + + Once the configuration has synced to the edge network, request a file through your Pull Zone hostname, for example: + + ``` + https://mys3zone.b-cdn.net/bunny.jpg + ``` + + If the file is served, Bunny CDN is caching content from your bucket. Replace your S3 URLs with the Bunny CDN URLs in your application to start serving cached content. + + diff --git a/cdn/integrations/storage/azure-blob.mdx b/cdn/integrations/storage/azure-blob.mdx index 4c667157..009203e4 100644 --- a/cdn/integrations/storage/azure-blob.mdx +++ b/cdn/integrations/storage/azure-blob.mdx @@ -1,5 +1,54 @@ --- title: Microsoft Azure Storage Blobs description: Accelerate Azure Blob Storage delivery with bunny.net CDN for faster file access and reduced egress costs. -url: https://support.bunny.net/hc/en-us/articles/360018372772-How-to-speed-up-Microsoft-Azure-Storage-Blobs-with-BunnyCDN --- + +Bunny CDN caches files from your Microsoft Azure Blob Storage container and delivers them from a global edge network, speeding up delivery and reducing egress costs. This guide walks you through the setup in three steps. + + + Prefer to keep your files on bunny.net? [Bunny Storage](/storage) is globally replicated object storage with tight CDN integration, and it offers an [S3-compatible API](/storage/s3) (currently in beta). + + + + + Set up an Azure Storage container and upload some data, following [Microsoft's quickstart](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal). + + + Click the three dots to the right of your file, then select **Blob Properties**. + + + ![Opening Blob Properties](/images/cdn/integrations/storage/azure-blob-properties-menu.png) + + + Copy the blob URL. It looks like this: + + ``` + https://harrytest1.blob.core.windows.net/cdn01/bunnycdn.png + ``` + + + ![The blob URL in Blob Properties](/images/cdn/integrations/storage/azure-blob-url.png) + + + For the Pull Zone origin you only need the hostname and container path, so remove the file name: + + ``` + https://harrytest1.blob.core.windows.net/cdn01/ + ``` + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone. Give it a name (this becomes your CDN hostname), paste the trimmed URL into the **Origin URL** field, choose your pricing tiers, and click **Add Pull Zone**. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + ![Adding a Pull Zone with the Azure container as origin](/images/cdn/integrations/storage/azure-add-pull-zone.png) + + + + Once the configuration has synced to the edge network, request a file through your Pull Zone hostname, for example: + + ``` + https://azuretest.b-cdn.net/bunnycdn.png + ``` + + If the file is served, Bunny CDN is caching content from your container. Replace your container URLs with the Bunny CDN URLs in your application to start serving cached content. + + diff --git a/cdn/integrations/storage/backblaze.mdx b/cdn/integrations/storage/backblaze.mdx index e33e386e..c32f0797 100644 --- a/cdn/integrations/storage/backblaze.mdx +++ b/cdn/integrations/storage/backblaze.mdx @@ -1,5 +1,101 @@ --- title: Backblaze description: Speed up Backblaze B2 file delivery with bunny.net CDN for global caching and reduced bandwidth costs. -url: https://support.bunny.net/hc/en-us/articles/360018649972-How-to-speed-up-your-Backblaze-B2-file-delivery-with-Bunny-CDN --- + +Bunny CDN caches files from your Backblaze B2 bucket and delivers them from a global edge network, speeding up delivery and saving on bandwidth costs. This guide uses S3-compatible authentication to securely connect a private B2 bucket. If you don't have a Backblaze B2 account yet, you can [create one for free](https://www.backblaze.com/b2/sign-up.html). + + + Prefer to keep your files on bunny.net? [Bunny Storage](/storage) is globally replicated object storage with tight CDN integration, and it offers an [S3-compatible API](/storage/s3) (currently in beta). + + + + + Log in to Backblaze and click **Create a Bucket**. Set the bucket to **Private** mode to keep your content secure while it's served to users. Encryption and Object Lock can be left at their defaults. + + + ![Creating a Backblaze B2 bucket](/images/cdn/integrations/storage/backblaze-create-bucket.png) + + + + ![Setting the bucket to Private mode](/images/cdn/integrations/storage/backblaze-bucket-private.png) + + + + To authenticate securely, Bunny CDN connects to your bucket using S3 authentication. Select **App Keys** in the Backblaze dashboard. + + + ![The App Keys page](/images/cdn/integrations/storage/backblaze-app-keys.png) + + + Click **Add a New Application Key**. + + + ![Adding a new application key](/images/cdn/integrations/storage/backblaze-add-app-key.png) + + + Select the private bucket you created and ensure **Allow List All Bucket Names** is checked, then click **Create New Key**. + + + ![Configuring the application key](/images/cdn/integrations/storage/backblaze-app-key-config.png) + + + On the confirmation page, save the **keyID** and **applicationKey** somewhere safe. You'll need them in a later step. + + + ![The created application key details](/images/cdn/integrations/storage/backblaze-app-key-created.png) + + + + Click **Browse Files** and upload a test file if you don't have one. Click the **(i)** info tooltip next to the file. + + + ![Browsing files and opening the info tooltip](/images/cdn/integrations/storage/backblaze-browse-files.png) + + + Find the **S3 URL** and save it, excluding the file name. For example, for a bucket named `bunnytestbucket`: + + ``` + https://bunnytestbucket.s3.eu-central-003.backblazeb2.com + ``` + + + ![The S3 URL in the file details](/images/cdn/integrations/storage/backblaze-s3-url.png) + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and open **Add Pull Zone**. Give it a name (this becomes your CDN hostname) and paste the S3 URL from the previous step into the **Origin URL** field. The Host Header is generated automatically and doesn't need changing. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + ![Adding a Pull Zone with the B2 S3 URL as origin](/images/cdn/integrations/storage/backblaze-add-pull-zone.png) + + + To use an existing Pull Zone instead, set the same Origin URL in its settings. + + + ![Reconfiguring an existing Pull Zone](/images/cdn/integrations/storage/backblaze-reconfigure-pull-zone.png) + + + + Open the **S3 Authentication** section of your Pull Zone's **Security** settings and click **Enable AWS S3 Authentication**. Fill in the details using the keys from step 2: + + - **AWS Key**: your B2 `keyID` + - **AWS Secret**: your B2 `applicationKey` + - **AWS Region Name**: the region from your origin URL (for example, `eu-central`) + + + ![Configuring AWS S3 authentication on the Pull Zone](/images/cdn/integrations/storage/backblaze-s3-authentication.png) + + + Click **Save Configuration**. + + + With everything configured, request a file through your Pull Zone hostname, for example: + + ``` + https://bunnytestwordpress.b-cdn.net/code-to-share.js + ``` + + If the file is served, your private B2 bucket is protected by S3 authentication and accelerated by Bunny CDN. Replace your existing URLs with the Bunny CDN URLs in your application to start serving cached content. + + diff --git a/cdn/integrations/storage/digitalocean-spaces.mdx b/cdn/integrations/storage/digitalocean-spaces.mdx index 2816d063..ed9b905c 100644 --- a/cdn/integrations/storage/digitalocean-spaces.mdx +++ b/cdn/integrations/storage/digitalocean-spaces.mdx @@ -1,5 +1,46 @@ --- title: DigitalOcean Spaces description: Accelerate DigitalOcean Spaces content delivery with bunny.net CDN for faster global file access. -url: https://support.bunny.net/hc/en-us/articles/360020439871-How-to-speed-up-your-DigitalOcean-Space-with-BunnyCDN --- + +Bunny CDN pulls and caches files from your DigitalOcean Space and delivers them from a global edge network, getting your content to users faster than serving from the Space alone. This guide walks you through the setup in three steps. + + + Prefer to keep your files on bunny.net? [Bunny Storage](/storage) is globally replicated object storage with tight CDN integration, and it offers an [S3-compatible API](/storage/s3) (currently in beta). + + + + + Set up your Space and upload some content, following [DigitalOcean's Spaces quickstart](https://docs.digitalocean.com/products/spaces/). Note the **Space URL** shown on the Create a Space page, you'll use it as your Pull Zone origin. + + + Disable DigitalOcean's built-in Spaces CDN. Leaving it enabled interferes with Bunny CDN. + + + + ![DigitalOcean Space URL](/images/cdn/integrations/storage/digitalocean-space-url.png) + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone. Give it a name and set the origin URL to your Space URL from the previous step, then choose your pricing and region tiers and click **Add Pull Zone**. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + ![Adding a Pull Zone with the Space URL as origin](/images/cdn/integrations/storage/digitalocean-add-pull-zone.png) + + + + Upload some files to your Space and make sure their permissions are set to **Public**, so Bunny CDN can fetch and cache them. Once the configuration has synced to the edge network, request a file through your Pull Zone hostname. For example: + + ``` + https://bunnyspace.ams3.digitaloceanspaces.com/bunny-flying.png + ``` + + becomes: + + ``` + https://bunnyspace.b-cdn.net/bunny-flying.png + ``` + + If the `b-cdn.net` URL serves the file, Bunny CDN is caching content from your Space. Replace your Space URLs with the Bunny CDN URLs in your application to start serving cached content. + + diff --git a/cdn/integrations/storage/ovh.mdx b/cdn/integrations/storage/ovh.mdx index 321729ea..156fe264 100644 --- a/cdn/integrations/storage/ovh.mdx +++ b/cdn/integrations/storage/ovh.mdx @@ -1,5 +1,39 @@ --- title: OVH Public Cloud description: Use bunny.net CDN with OVH Public Cloud storage for faster file delivery and improved global performance. -url: https://support.bunny.net/hc/en-us/articles/360017976692-How-to-speed-up-your-OVH-Public-Cloud-file-delivery-with-BunnyCDN --- + +Bunny CDN caches files from your OVH Public Cloud storage container and delivers them from a global edge network, speeding up delivery and reducing bandwidth costs. This guide walks you through the setup in three steps. + + + Prefer to keep your files on bunny.net? [Bunny Storage](/storage) is globally replicated object storage with tight CDN integration, and it offers an [S3-compatible API](/storage/s3) (currently in beta). + + + + + If you don't already have an OVH Public Cloud storage container, set one up following [OVH's guide](https://docs.ovh.com/gb/en/storage/pcs/create-container/). Bunny CDN works with both the **Static hosting** and **Public** container options. + + + Once your container is created, copy the full container URL from the container page. This forms the basis of your Pull Zone, so you can append a file path inside the container to your Pull Zone hostname. + + + ![The OVH container URL](/images/cdn/integrations/storage/ovh-container-url.png) + + + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone. Give it a name (this becomes your CDN hostname), paste the container URL into the **Origin URL** field, choose your pricing tier, and click **Add Pull Zone**. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + ![Adding a Pull Zone with the OVH container as origin](/images/cdn/integrations/storage/ovh-add-pull-zone.png) + + + + Once the configuration has synced to the edge network, append a file name to your Pull Zone hostname, for example: + + ``` + https://ovhstorage.b-cdn.net/bunny.png + ``` + + If the file is served, Bunny CDN is caching content from your container. Replace your container URLs with the Bunny CDN URLs in your application to start serving cached content. + + diff --git a/cdn/integrations/storage/wasabi.mdx b/cdn/integrations/storage/wasabi.mdx index 758245ba..1ec4d25b 100644 --- a/cdn/integrations/storage/wasabi.mdx +++ b/cdn/integrations/storage/wasabi.mdx @@ -1,5 +1,44 @@ --- title: Wasabi description: Speed up Wasabi cloud storage delivery with bunny.net CDN for global caching and faster file access. -url: https://support.bunny.net/hc/en-us/articles/360018329232-How-to-speed-up-Wasabi-file-delivery-with-BunnyCDN --- + +Bunny CDN caches files from your Wasabi bucket and delivers them from a global edge network, speeding up delivery affordably. This guide walks you through the setup in three steps. + + + Prefer to keep your files on bunny.net? [Bunny Storage](/storage) is globally replicated object storage with tight CDN integration, and it offers an [S3-compatible API](/storage/s3) (currently in beta). + + + + + If you don't already have a Wasabi bucket with some data in it, set one up first. Wasabi has a [tutorial video](https://www.youtube.com/watch?v=VSmSYDCuOEg) covering this. + + + First, work out your bucket's URL. Navigate to `https://s3.wasabisys.com/BUCKETNAME/filepath` and you'll be redirected to the region that hosts your bucket, giving a URL like: + + ``` + https://s3.us-west-1.wasabisys.com/bunnycdn/bunnycdn.png + ``` + + For the Pull Zone origin, drop the file path and keep the bucket URL: + + ``` + https://s3.us-west-1.wasabisys.com/bunnycdn/ + ``` + + Log in to your [bunny.net dashboard](https://dash.bunny.net) and create a new Pull Zone. Give it a name (this becomes your CDN hostname), paste the bucket URL into the **Origin URL** field, choose your pricing tier, and click **Add Pull Zone**. For details, see [How to create your first Pull Zone](/cdn/quickstart). + + + ![Adding a Pull Zone with the Wasabi bucket as origin](/images/cdn/integrations/storage/wasabi-add-pull-zone.png) + + + + Once the configuration has synced to the edge network, append a file name to your Pull Zone hostname, for example: + + ``` + https://wasabitest.b-cdn.net/bunnycdn.png + ``` + + If the file is served, Bunny CDN is caching content from your bucket. Replace your Wasabi URLs with the Bunny CDN URLs in your application to start serving cached content. + + diff --git a/cdn/pricing.mdx b/cdn/pricing.mdx index cf289546..9235f9a2 100644 --- a/cdn/pricing.mdx +++ b/cdn/pricing.mdx @@ -40,3 +40,19 @@ From a configuration perspective, both tiers work identically. The difference is See the [Network page](https://bunny.net/network) for a full list of Standard and Volume PoP locations. + +## Change a Pull Zone's pricing tier + +You can change a Pull Zone's tier at any time: + + + + In the [bunny.net dashboard](https://dash.bunny.net), go to **CDN** and select your Pull Zone. + + + Click **Pricing & Routing**. Here you can select the tier, and enable or disable specific pricing regions for serving your content. + + + Click **Confirm** to apply your changes. + + diff --git a/cdn/purge-cache.mdx b/cdn/purge-cache.mdx index 6ea62027..228a8d4c 100644 --- a/cdn/purge-cache.mdx +++ b/cdn/purge-cache.mdx @@ -12,6 +12,10 @@ You can purge the entire Pull Zone, or purge only files matching a specific tag. re-cached. Performance may decrease briefly until edge nodes repopulate. + + Bunny CDN does not monitor your origin for file changes. Once a file is cached, it stays cached until its `Cache-Control` lifetime expires or it's evicted to make room for more popular content. To reflect a change immediately, purge the cache or serve the file under a new query string (such as `?v=2`). + + ## Dashboard @@ -25,7 +29,7 @@ You can purge the entire Pull Zone, or purge only files matching a specific tag. - Leave the search tag empty to purge the entire Pull Zone. If you enter a tag, only files with a matching `CDN-Tag` header are removed—the rest of your cache stays intact. + Leave the search tag empty to purge the entire Pull Zone. If you enter a tag, only files with a matching `CDN-Tag` header are removed. The rest of your cache stays intact. ![Purge cache by tag](/images/cdn/full-cache-purge-or-by-tag.png) diff --git a/cdn/security/geographic-blocking.mdx b/cdn/security/geographic-blocking.mdx new file mode 100644 index 00000000..a64d8257 --- /dev/null +++ b/cdn/security/geographic-blocking.mdx @@ -0,0 +1,34 @@ +--- +title: Geographic Blocking +description: Block access to your Pull Zone from specific countries using bunny.net's Traffic Manager. +--- + +You can block access to a Pull Zone from specific countries using the **Traffic Manager**, for legal, regulatory, or other reasons. + +## Block countries + + + + In the [bunny.net dashboard](https://dash.bunny.net), go to **Delivery > CDN** and select your Pull Zone. + + + Click **Traffic Manager** in the Pull Zone menu. You'll see a world map with two options: **Redirected countries** and **Blocked countries**. + + + Add countries to **Blocked countries** by clicking them on the map or using the dropdown, then save your changes. + + + +## How blocking works + +Blocked countries are blocked at the DNS level. A DNS request to the Pull Zone from a blocked country resolves to `127.0.0.1`, so the connection never reaches the CDN and the user sees a connection error. Because the request is blocked before HTTP, it isn't logged on the Pull Zone and incurs no cost. + +Location is determined by geolocating the end user's EDNS client subnet using the MaxMind GeoIP2 database. If the resolver doesn't provide an EDNS client subnet, the resolver's own IP address is used instead. + + + **Redirected countries** is a related Traffic Manager option. Instead of blocking, it routes requests to the most affordable pricing region (North America / Europe), which you can use to control which regions serve which countries. + + + + IP-based geographic blocking isn't foolproof. Users can bypass it with a VPN or proxy. For stricter control, combine it with [Token Authentication](/cdn/security/token-authentication) country restrictions. + diff --git a/cdn/smart-cache.mdx b/cdn/smart-cache.mdx index 33a9983b..3b6965df 100644 --- a/cdn/smart-cache.mdx +++ b/cdn/smart-cache.mdx @@ -82,3 +82,33 @@ To cache a file type that Smart Cache normally excludes, create an Edge Rule wit This is useful for caching HTML pages or API responses that you know are safe to cache, such as static site generators or public API endpoints. + +## Improving your cache hit rate + +A healthy Pull Zone typically sees a cache hit rate above 95%. A rate below 70% usually points to a configuration issue causing requests to be fetched from your origin instead of served from cache. Common causes and fixes: + +- **Missing or restrictive `Cache-Control` headers:** Bunny follows the origin's `Cache-Control` header to decide whether and how long to cache. Check it with `curl -I https://your-zone.b-cdn.net/path/file.css`. If it's missing, set to `no-cache`, or has a very low `max-age`, the file won't cache well. Set an appropriate `max-age`, or override caching with an Edge Rule (see [Override Smart Cache](#override-smart-cache)). +- **Changing query strings:** Each unique URL, including its query string, is cached separately, so `/style.css?v=1` and `/style.css?v=2` are two cache entries. If the query string changes but the content doesn't, disable **URL Query String** under [Vary Cache](/cdn/vary-cache#url-query-string) so all variants share one cache file. Review your workflow first, since this affects every query-string variant. +- **New or recently purged zone:** Cache hit rate builds up over time. A brand-new or just-purged zone shows a low rate until traffic warms the cache, usually within a day. +- **Dynamic content via Smart Cache:** With Smart Cache enabled, dynamic content is treated as non-cacheable, which lowers the reported rate on zones that serve many dynamic assets. +- **Infrequently requested files:** Files that aren't requested for a period (typically 5 to 7 days) may be evicted from cache. The more popular a file, the higher its hit rate. +- **Mostly static content:** Consider [Perma-Cache](/cdn/perma-cache) to permanently store files on edge storage. Note that Perma-Cache hits are still reported as MISS in CDN cache metrics. +- **Simultaneous mass requests:** For livestreaming or live events where many users request the same uncached asset at once, enable [Request Coalescing](/cdn/request-coalescing) to funnel them into a single origin request. + +## Video and large file delivery + +Bunny CDN supports HTTP range requests, which let players fetch specific byte ranges so viewers can skip ahead in a video. Range requests are enabled by default for cached content. For content that isn't cached yet, or videos that buffer when you skip ahead or large files that are only seekable once fully downloaded, two settings help: + +- **Enable Optimize for Video Delivery:** In your Pull Zone **Caching** settings, enable **Optimize for Video Delivery**. This slices large files into small chunks that are fetched independently, so any part of a file, including range requests against uncached content, can be served at any time regardless of cache state. Without it, an uncached file is downloaded from the origin as one large object and is only seekable from the start until fully cached. +- **Encode video with the header at the start:** If seeking still fails even when the file is cached, your video likely has its metadata (the moov atom) at the end of the file, forcing the browser to download the whole file before it can play. Re-encode with a web-optimized (fast-start) preset so the header sits at the beginning. + + + RTMP streaming isn't supported on the CDN. For live and on-demand video streaming, use [Bunny Stream](/stream). + + +## ETag support + +Bunny CDN supports the [`ETag`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) response header, which identifies a specific version of a file so browsers and the CDN can tell whether a cached copy is still valid. + +- If your origin sends an `ETag` and **Optimize for Video Delivery** is disabled, Bunny passes the `ETag` through and caches the response accordingly. +- If Bunny compresses the file (Brotli or Gzip), the `ETag` is converted to a weak `ETag` prefixed with `W/` (for example, `"123456789"` becomes `W/"123456789"`), since compression changes the file's binary output. diff --git a/cdn/ssl-setup.mdx b/cdn/ssl-setup.mdx index d98039d0..d99b5db0 100644 --- a/cdn/ssl-setup.mdx +++ b/cdn/ssl-setup.mdx @@ -105,14 +105,19 @@ Use this option for wildcard domains (`*.yourdomain.com`) or certificates from c Common causes: -- **DNS not propagated**: Use [dnschecker.org](https://dnschecker.org) to confirm your CNAME is resolving globally +- **DNS not propagated**: Use [dnschecker.org](https://dnschecker.org) to confirm your CNAME is resolving globally. After updating a DNS record, wait a few minutes before requesting the certificate so the change can propagate, otherwise our servers may read a stale cached record +- **Incorrect CNAME record**: Verify with a [DNS lookup tool](https://toolbox.googleapps.com/apps/dig/) that your hostname returns a CNAME pointing to the exact hostname of your Pull Zone. If you use [Bunny DNS](/dns), point your custom domain's CNAME to your `b-cdn.net` Pull Zone hostname - **Cloudflare proxy enabled**: Disable the orange cloud icon on your CNAME record - **Geolocation blocks**: Let's Encrypt validates from multiple regions (including USA and Europe). If you've blocked these regions via Traffic Manager or Edge Rules, validation will fail -- **CAA records**: If your domain has CAA DNS records, add `letsencrypt.org` to the allowed issuers +- **CAA records**: If your domain has CAA DNS records, add `letsencrypt.org` to the allowed issuers, or remove the CAA records to allow any issuer ### Rate limiting -Requesting certificates too many times in a short period can trigger Let's Encrypt rate limits (up to one week). Be patient when troubleshooting DNS issues before retrying. +Requesting certificates too many times in a short period can trigger Let's Encrypt rate limits (up to one week). Be patient when troubleshooting DNS issues before retrying. If you need SSL immediately while rate-limited, upload a [custom certificate](#custom-certificate) from another CA. + +### Debugging a failed request + +When a certificate request fails via the dashboard or API, the returned error includes an ACME challenge URL (like `https://acme-v02.api.letsencrypt.org/acme/chall/...`). Open it to see the exact reason the issuance failed. If you're still stuck, contact [support@bunny.net](mailto:support@bunny.net). ## Root domains diff --git a/cdn/troubleshooting/301-redirects.mdx b/cdn/troubleshooting/301-redirects.mdx deleted file mode 100644 index 47d8074b..00000000 --- a/cdn/troubleshooting/301-redirects.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: 301 Redirects -description: Fix 301 redirect loops between bunny.net CDN and your origin server. -url: https://support.bunny.net/hc/en-us/articles/360000228371-How-to-fix-301-redirects-back-to-my-origin-URL ---- diff --git a/cdn/troubleshooting/502-504-errors.mdx b/cdn/troubleshooting/502-504-errors.mdx deleted file mode 100644 index b771570a..00000000 --- a/cdn/troubleshooting/502-504-errors.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: 502 and 504 Errors -description: Troubleshoot and resolve 502 Bad Gateway and 504 Gateway Timeout errors on your CDN. -url: https://support.bunny.net/hc/en-us/articles/115001131172-I-am-seeing-a-lot-of-502-and-504-errors ---- diff --git a/cdn/troubleshooting/cookies-still-sent.mdx b/cdn/troubleshooting/cookies-still-sent.mdx deleted file mode 100644 index 1e85c799..00000000 --- a/cdn/troubleshooting/cookies-still-sent.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Cookies Still Sent -description: Resolve issues where cookies are still being sent despite enabling the Disable Cookies feature. -url: https://support.bunny.net/hc/en-us/articles/360018766071-My-browser-is-still-sending-cookies-despite-enabling-the-Disable-Cookies-feature-for-my-Pull-Zone ---- diff --git a/cdn/troubleshooting/lets-encrypt-issues.mdx b/cdn/troubleshooting/lets-encrypt-issues.mdx deleted file mode 100644 index 039536ec..00000000 --- a/cdn/troubleshooting/lets-encrypt-issues.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Let's Encrypt Issues -description: Troubleshoot problems with obtaining free Let's Encrypt SSL certificates for your pull zone. -url: https://support.bunny.net/hc/en-us/articles/115001973492-I-am-unable-to-get-the-free-Let-s-Encrypt-for-my-zone ---- diff --git a/cdn/troubleshooting/low-cache-hit-rate.mdx b/cdn/troubleshooting/low-cache-hit-rate.mdx deleted file mode 100644 index 7d703ba4..00000000 --- a/cdn/troubleshooting/low-cache-hit-rate.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Low Cache Hit Rate -description: Diagnose and improve a low cache hit rate on your pull zone for better CDN performance. -url: https://support.bunny.net/hc/en-us/articles/115001660869-My-Pull-Zone-has-a-low-cache-HIT-rate-percentage ---- diff --git a/cdn/troubleshooting/unexpected-redirects.mdx b/cdn/troubleshooting/unexpected-redirects.mdx deleted file mode 100644 index ed48c6f3..00000000 --- a/cdn/troubleshooting/unexpected-redirects.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Unexpected Redirects -description: Resolve unexpected URL redirects when accessing content through your CDN. -url: https://support.bunny.net/hc/en-us/articles/360017484759-I-have-Unexpected-CDN-URL-Redirects ---- diff --git a/cdn/vary-cache.mdx b/cdn/vary-cache.mdx index 247f1f52..039bcafa 100644 --- a/cdn/vary-cache.mdx +++ b/cdn/vary-cache.mdx @@ -92,6 +92,10 @@ When enabled, Bunny sends a `CDN-MobileDevice` header to your origin with a valu Varies the cache based on specific cookie values. When enabled, enter the cookie names you want to use as part of the cache key. + + **Still seeing cookies on your CDN domain after enabling Disable Cookies?** The Disable Cookies feature strips `Set-Cookie` headers traveling over the CDN, but it can't remove wildcard cookies, for example a `.example.com` cookie set by Google Analytics, because those are set directly by your main domain rather than the CDN. They have practically no performance impact. To avoid them entirely, serve the CDN from a domain that isn't a subdomain of your site, or use the `b-cdn.net` hostname. + + Custom header-based vary is available via internal configuration. Contact [support@bunny.net](mailto:support@bunny.net) if you need to vary cache on a diff --git a/dns/records.mdx b/dns/records.mdx index 5933d2fa..c80c316d 100644 --- a/dns/records.mdx +++ b/dns/records.mdx @@ -197,7 +197,7 @@ A wildcard record (for example, `*.example.com`) is used to synthesize responses | **TLSA** | Associates a TLS certificate with a domain. Used with DANE to specify which certificate or CA should be trusted for a domain. | - When a CNAME record is used at the zone apex, Bunny DNS automatically flattens it to A/AAAA records. + Bunny DNS supports CNAME flattening on both **CNAME** and **Pull Zone (PZ)** records. When either is used at the zone apex (root domain), Bunny DNS automatically flattens it to A/AAAA records, so you can point a root domain directly at a Pull Zone. ### Bunny-specific records diff --git a/docs.json b/docs.json index 95219c0e..3274bfc5 100644 --- a/docs.json +++ b/docs.json @@ -75,7 +75,10 @@ "account/api-keys", "account/integrations", "account/data-processing-agreement", - "account/close-account" + "account/close-account", + "account/account-suspended", + "account/abuse-procedure", + "account/dmca-procedure" ] }, { @@ -177,6 +180,7 @@ "group": "Security", "pages": [ "cdn/security/hotlink-protection", + "cdn/security/geographic-blocking", { "group": "Token Authentication", "pages": [ @@ -207,6 +211,7 @@ "pages": [ "cdn/integrations/cms/wordpress", "cdn/integrations/cms/typo3", + "cdn/integrations/cms/joomla", "cdn/integrations/cms/expressionengine", "cdn/integrations/cms/shopware", "cdn/integrations/cms/drupal", @@ -240,14 +245,8 @@ { "group": "Troubleshooting", "pages": [ - "cdn/troubleshooting/unexpected-redirects", - "cdn/troubleshooting/cookies-still-sent", "cdn/troubleshooting/run-traceroute", - "cdn/troubleshooting/still-slow", - "cdn/troubleshooting/301-redirects", - "cdn/troubleshooting/502-504-errors", - "cdn/troubleshooting/low-cache-hit-rate", - "cdn/troubleshooting/lets-encrypt-issues" + "cdn/troubleshooting/still-slow" ] } ] @@ -2264,6 +2263,36 @@ "destination": "/integrations/wordpress/troubleshooting-acceleration-not-enabled", "permanent": true }, + { + "source": "/cdn/troubleshooting/301-redirects", + "destination": "/cdn/connectivity#origin-redirect-loops", + "permanent": true + }, + { + "source": "/cdn/troubleshooting/unexpected-redirects", + "destination": "/cdn/connectivity#origin-redirect-loops", + "permanent": true + }, + { + "source": "/cdn/troubleshooting/502-504-errors", + "destination": "/cdn/connectivity#502-and-504-errors", + "permanent": true + }, + { + "source": "/cdn/troubleshooting/cookies-still-sent", + "destination": "/cdn/vary-cache#cookie", + "permanent": true + }, + { + "source": "/cdn/troubleshooting/low-cache-hit-rate", + "destination": "/cdn/smart-cache#improving-your-cache-hit-rate", + "permanent": true + }, + { + "source": "/cdn/troubleshooting/lets-encrypt-issues", + "destination": "/cdn/ssl-setup#troubleshooting", + "permanent": true + }, { "source": "/integrations", "destination": "/integrations/wordpress", diff --git a/faq.mdx b/faq.mdx index 49b2f5ee..d1b17c4d 100644 --- a/faq.mdx +++ b/faq.mdx @@ -35,3 +35,7 @@ Yes, you can switch to a paid account anytime before your trial ends by contacti ### How are charges calculated during the trial? Charges are calculated according to our standard pricing for each product or service. You can view detailed usage and billing information in your account dashboard. + +### Can I get a refund? + +bunny.net operates on a prepaid model, so payments are generally non-refundable. We make exceptions in certain cases, such as a payment made by mistake, or a payment made within one month of account creation where the balance hasn't been used. If you believe you're eligible, [contact support](https://bunny.net/contact/) and we'll review your request. diff --git a/images/cdn/integrations/cms/discourse-add-zone.png b/images/cdn/integrations/cms/discourse-add-zone.png new file mode 100644 index 00000000..7ed0cc6f Binary files /dev/null and b/images/cdn/integrations/cms/discourse-add-zone.png differ diff --git a/images/cdn/integrations/cms/discourse-cdn-url.png b/images/cdn/integrations/cms/discourse-cdn-url.png new file mode 100644 index 00000000..197ead36 Binary files /dev/null and b/images/cdn/integrations/cms/discourse-cdn-url.png differ diff --git a/images/cdn/integrations/cms/drupal-cdn-mapping.png b/images/cdn/integrations/cms/drupal-cdn-mapping.png new file mode 100644 index 00000000..7112b004 Binary files /dev/null and b/images/cdn/integrations/cms/drupal-cdn-mapping.png differ diff --git a/images/cdn/integrations/cms/drupal-cdn-status.png b/images/cdn/integrations/cms/drupal-cdn-status.png new file mode 100644 index 00000000..1bd1cb4a Binary files /dev/null and b/images/cdn/integrations/cms/drupal-cdn-status.png differ diff --git a/images/cdn/integrations/cms/drupal-enable-cdn-modules.png b/images/cdn/integrations/cms/drupal-enable-cdn-modules.png new file mode 100644 index 00000000..fffa58a1 Binary files /dev/null and b/images/cdn/integrations/cms/drupal-enable-cdn-modules.png differ diff --git a/images/cdn/integrations/cms/drupal-extend-install-module.png b/images/cdn/integrations/cms/drupal-extend-install-module.png new file mode 100644 index 00000000..86808a0e Binary files /dev/null and b/images/cdn/integrations/cms/drupal-extend-install-module.png differ diff --git a/images/cdn/integrations/cms/joomla-cdn-domain.png b/images/cdn/integrations/cms/joomla-cdn-domain.png new file mode 100644 index 00000000..0b0c2b43 Binary files /dev/null and b/images/cdn/integrations/cms/joomla-cdn-domain.png differ diff --git a/images/cdn/integrations/cms/joomla-create-pull-zone.png b/images/cdn/integrations/cms/joomla-create-pull-zone.png new file mode 100644 index 00000000..98945ded Binary files /dev/null and b/images/cdn/integrations/cms/joomla-create-pull-zone.png differ diff --git a/images/cdn/integrations/cms/joomla-find-plugin.png b/images/cdn/integrations/cms/joomla-find-plugin.png new file mode 100644 index 00000000..9baccaea Binary files /dev/null and b/images/cdn/integrations/cms/joomla-find-plugin.png differ diff --git a/images/cdn/integrations/cms/joomla-install-plugin.png b/images/cdn/integrations/cms/joomla-install-plugin.png new file mode 100644 index 00000000..22447255 Binary files /dev/null and b/images/cdn/integrations/cms/joomla-install-plugin.png differ diff --git a/images/cdn/integrations/cms/magento-add-pull-zone.png b/images/cdn/integrations/cms/magento-add-pull-zone.png new file mode 100644 index 00000000..ab2b04c4 Binary files /dev/null and b/images/cdn/integrations/cms/magento-add-pull-zone.png differ diff --git a/images/cdn/integrations/cms/magento-base-urls.png b/images/cdn/integrations/cms/magento-base-urls.png new file mode 100644 index 00000000..111dadc8 Binary files /dev/null and b/images/cdn/integrations/cms/magento-base-urls.png differ diff --git a/images/cdn/integrations/cms/magento-cors-headers.png b/images/cdn/integrations/cms/magento-cors-headers.png new file mode 100644 index 00000000..a2b9fada Binary files /dev/null and b/images/cdn/integrations/cms/magento-cors-headers.png differ diff --git a/images/cdn/integrations/cms/magento-web-config.png b/images/cdn/integrations/cms/magento-web-config.png new file mode 100644 index 00000000..408b0b36 Binary files /dev/null and b/images/cdn/integrations/cms/magento-web-config.png differ diff --git a/images/cdn/integrations/cms/prestashop-ccc.png b/images/cdn/integrations/cms/prestashop-ccc.png new file mode 100644 index 00000000..244e644c Binary files /dev/null and b/images/cdn/integrations/cms/prestashop-ccc.png differ diff --git a/images/cdn/integrations/cms/prestashop-media-server.png b/images/cdn/integrations/cms/prestashop-media-server.png new file mode 100644 index 00000000..4b3ebeb1 Binary files /dev/null and b/images/cdn/integrations/cms/prestashop-media-server.png differ diff --git a/images/cdn/integrations/cms/prestashop-performance-menu.png b/images/cdn/integrations/cms/prestashop-performance-menu.png new file mode 100644 index 00000000..e9b5a342 Binary files /dev/null and b/images/cdn/integrations/cms/prestashop-performance-menu.png differ diff --git a/images/cdn/integrations/cms/shopware-activate-plugin.png b/images/cdn/integrations/cms/shopware-activate-plugin.png new file mode 100644 index 00000000..212d774e Binary files /dev/null and b/images/cdn/integrations/cms/shopware-activate-plugin.png differ diff --git a/images/cdn/integrations/cms/shopware-enable-plugin.png b/images/cdn/integrations/cms/shopware-enable-plugin.png new file mode 100644 index 00000000..0c7f136e Binary files /dev/null and b/images/cdn/integrations/cms/shopware-enable-plugin.png differ diff --git a/images/cdn/integrations/cms/shopware-plugin-manager.png b/images/cdn/integrations/cms/shopware-plugin-manager.png new file mode 100644 index 00000000..c2d1945a Binary files /dev/null and b/images/cdn/integrations/cms/shopware-plugin-manager.png differ diff --git a/images/cdn/integrations/cms/shopware-upload-plugin.png b/images/cdn/integrations/cms/shopware-upload-plugin.png new file mode 100644 index 00000000..bb64bd61 Binary files /dev/null and b/images/cdn/integrations/cms/shopware-upload-plugin.png differ diff --git a/images/cdn/integrations/cms/typo3-composer-install.png b/images/cdn/integrations/cms/typo3-composer-install.png new file mode 100644 index 00000000..ea2b3e02 Binary files /dev/null and b/images/cdn/integrations/cms/typo3-composer-install.png differ diff --git a/images/cdn/integrations/cms/typo3-edit-template.png b/images/cdn/integrations/cms/typo3-edit-template.png new file mode 100644 index 00000000..16e0f264 Binary files /dev/null and b/images/cdn/integrations/cms/typo3-edit-template.png differ diff --git a/images/cdn/integrations/cms/typo3-flush-caches.png b/images/cdn/integrations/cms/typo3-flush-caches.png new file mode 100644 index 00000000..c056bcad Binary files /dev/null and b/images/cdn/integrations/cms/typo3-flush-caches.png differ diff --git a/images/cdn/integrations/storage/azure-add-pull-zone.png b/images/cdn/integrations/storage/azure-add-pull-zone.png new file mode 100644 index 00000000..4dabd73b Binary files /dev/null and b/images/cdn/integrations/storage/azure-add-pull-zone.png differ diff --git a/images/cdn/integrations/storage/azure-blob-properties-menu.png b/images/cdn/integrations/storage/azure-blob-properties-menu.png new file mode 100644 index 00000000..63b20f3e Binary files /dev/null and b/images/cdn/integrations/storage/azure-blob-properties-menu.png differ diff --git a/images/cdn/integrations/storage/azure-blob-url.png b/images/cdn/integrations/storage/azure-blob-url.png new file mode 100644 index 00000000..14295863 Binary files /dev/null and b/images/cdn/integrations/storage/azure-blob-url.png differ diff --git a/images/cdn/integrations/storage/backblaze-add-app-key.png b/images/cdn/integrations/storage/backblaze-add-app-key.png new file mode 100644 index 00000000..0538be5e Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-add-app-key.png differ diff --git a/images/cdn/integrations/storage/backblaze-add-pull-zone.png b/images/cdn/integrations/storage/backblaze-add-pull-zone.png new file mode 100644 index 00000000..cb4e9a1e Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-add-pull-zone.png differ diff --git a/images/cdn/integrations/storage/backblaze-app-key-config.png b/images/cdn/integrations/storage/backblaze-app-key-config.png new file mode 100644 index 00000000..15294d49 Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-app-key-config.png differ diff --git a/images/cdn/integrations/storage/backblaze-app-key-created.png b/images/cdn/integrations/storage/backblaze-app-key-created.png new file mode 100644 index 00000000..733fe10c Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-app-key-created.png differ diff --git a/images/cdn/integrations/storage/backblaze-app-keys.png b/images/cdn/integrations/storage/backblaze-app-keys.png new file mode 100644 index 00000000..9c8ba19c Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-app-keys.png differ diff --git a/images/cdn/integrations/storage/backblaze-browse-files.png b/images/cdn/integrations/storage/backblaze-browse-files.png new file mode 100644 index 00000000..3af8d6ff Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-browse-files.png differ diff --git a/images/cdn/integrations/storage/backblaze-bucket-private.png b/images/cdn/integrations/storage/backblaze-bucket-private.png new file mode 100644 index 00000000..ec851bab Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-bucket-private.png differ diff --git a/images/cdn/integrations/storage/backblaze-create-bucket.png b/images/cdn/integrations/storage/backblaze-create-bucket.png new file mode 100644 index 00000000..f6673490 Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-create-bucket.png differ diff --git a/images/cdn/integrations/storage/backblaze-reconfigure-pull-zone.png b/images/cdn/integrations/storage/backblaze-reconfigure-pull-zone.png new file mode 100644 index 00000000..b0870a68 Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-reconfigure-pull-zone.png differ diff --git a/images/cdn/integrations/storage/backblaze-s3-authentication.png b/images/cdn/integrations/storage/backblaze-s3-authentication.png new file mode 100644 index 00000000..afd9831a Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-s3-authentication.png differ diff --git a/images/cdn/integrations/storage/backblaze-s3-url.png b/images/cdn/integrations/storage/backblaze-s3-url.png new file mode 100644 index 00000000..3a6bd18b Binary files /dev/null and b/images/cdn/integrations/storage/backblaze-s3-url.png differ diff --git a/images/cdn/integrations/storage/digitalocean-add-pull-zone.png b/images/cdn/integrations/storage/digitalocean-add-pull-zone.png new file mode 100644 index 00000000..1a6355e4 Binary files /dev/null and b/images/cdn/integrations/storage/digitalocean-add-pull-zone.png differ diff --git a/images/cdn/integrations/storage/digitalocean-space-url.png b/images/cdn/integrations/storage/digitalocean-space-url.png new file mode 100644 index 00000000..5fb7b4d9 Binary files /dev/null and b/images/cdn/integrations/storage/digitalocean-space-url.png differ diff --git a/images/cdn/integrations/storage/ovh-add-pull-zone.png b/images/cdn/integrations/storage/ovh-add-pull-zone.png new file mode 100644 index 00000000..a8bdbd53 Binary files /dev/null and b/images/cdn/integrations/storage/ovh-add-pull-zone.png differ diff --git a/images/cdn/integrations/storage/ovh-container-url.png b/images/cdn/integrations/storage/ovh-container-url.png new file mode 100644 index 00000000..4317e58e Binary files /dev/null and b/images/cdn/integrations/storage/ovh-container-url.png differ diff --git a/images/cdn/integrations/storage/s3-add-pull-zone.png b/images/cdn/integrations/storage/s3-add-pull-zone.png new file mode 100644 index 00000000..ad95c9ae Binary files /dev/null and b/images/cdn/integrations/storage/s3-add-pull-zone.png differ diff --git a/images/cdn/integrations/storage/s3-create-bucket.png b/images/cdn/integrations/storage/s3-create-bucket.png new file mode 100644 index 00000000..cbd9c371 Binary files /dev/null and b/images/cdn/integrations/storage/s3-create-bucket.png differ diff --git a/images/cdn/integrations/storage/s3-get-url.png b/images/cdn/integrations/storage/s3-get-url.png new file mode 100644 index 00000000..f9b75ea9 Binary files /dev/null and b/images/cdn/integrations/storage/s3-get-url.png differ diff --git a/images/cdn/integrations/storage/wasabi-add-pull-zone.png b/images/cdn/integrations/storage/wasabi-add-pull-zone.png new file mode 100644 index 00000000..f1f072cb Binary files /dev/null and b/images/cdn/integrations/storage/wasabi-add-pull-zone.png differ diff --git a/storage/limits.mdx b/storage/limits.mdx index 4ef797ba..2577a332 100644 --- a/storage/limits.mdx +++ b/storage/limits.mdx @@ -1,6 +1,6 @@ --- title: Limits -description: Connection limits and rate limits for Bunny Storage API and FTP access +description: Storage zone, connection, and rate limits for Bunny Storage, plus the file-renaming limitation. --- To ensure optimal performance for all users, Bunny Storage has limits on concurrent connections and uploads. @@ -32,6 +32,12 @@ If this happens: 2. Implement exponential backoff retry logic 3. Distribute requests across longer time periods +## Renaming files + +Renaming files or folders directly on Bunny Storage is not currently supported by design, so you won't see a rename option in the dashboard or over FTP. Allowing renames could cause inconsistencies while content propagates across edge locations, so the action is blocked to keep replication stable. + +To rename a file, re-upload it under the new name, then delete the old one once the upload succeeds. + ## Durability and reliability For information about data durability, redundancy, and reliability guarantees, see [Durability](/storage/durability). diff --git a/stream/http-api.mdx b/stream/http-api.mdx index 1cca12bd..b5536c7a 100644 --- a/stream/http-api.mdx +++ b/stream/http-api.mdx @@ -13,7 +13,7 @@ Before you begin, ensure you have: A video library already created. It can be done **via Dashboard** (Follow "Step 1" in the [Stream Quickstart](/stream/quickstart) to create a video library. An incorrect library ID will result in upload failure) or **via API** (use the "Add Video Library" HTTP call explained in the [Stream API Reference](/api-reference/stream) guide). -Have your Stream API key prepared. To learn how to obtain your Stream API key, see [How to obtain your Stream API key guide.](https://support.bunny.net/hc/en-us/articles/13503339878684-How-to-find-your-stream-API-key) +Have your Stream API key prepared. To learn how to obtain your Stream API key, see [Obtaining your Stream API key](/stream/authentication). ## Understanding the Upload Process