Reverse proxy checklist

Set up and test a reverse proxy for your Webflow site, from origin domain to final QA.

reverse-proxy-checklist.md

Ready for Claude, Cursor, or ChatGPT.
Download .md ↓

1. Reverse proxy setup

0/9 checked

Choose your proxy provider, configure your Webflow origin site, and establish the necessary SEO and security settings.

Decide on a proxy service and review documentation

Reverse proxy setup can differ between providers. Review your chosen provider's documentation before getting started to help plan your configuration.

↳ Resources

Publish your site to a custom domain or subdomain for your origin URL

Don't use your webflow.io domain as your origin site, as this would prevent you from using it as a staging environment or enabling private staging. Using a custom domain or subdomain as your origin allows you to follow best practices for publishing and deployment workflows.

Where: Site settings > Publishing

↳ Resources

Set your site's canonical tag to the URL you want search engines to index

Set the appropriate canonical tag through Webflow Site settings or Google Tag Manager. This helps prevent your origin site from being indexed by search engines, which can cause duplicate content issues and confusion about your site's intended URL.

Where: Site settings > SEO

↳ Resources

Secure your origin site with SSL

Even if your reverse proxy server already secures requests between the server and your visitors, it's best practice to secure the origin site and requests between it and your server.

If the DNS records for your origin site point directly to Webflow, you can use Webflow's default SSL certificate. For nonstandard DNS setups or based on your preference, you can upload a custom SSL certificate.

Caution: Wildcard subdomain certificates issued through Cloudflare (such as DigiCert certificates) aren't compatible with Webflow. Instead, you'll need origin certificates for the explicit site names registered in Webflow.

Where: Site settings > Publishing

↳ Resources

2. Proxy configuration

0/9 checked

Configure your sitemap, internal links, password protection, caching, and script behavior to support your reverse proxy setup.

Enable and add a custom sitemap

Webflow's auto-generated sitemap includes links using your origin site's domain or subdomain. To prevent your origin site from being crawled and indexed, enable the option to use your global canonical URL as the base URL for each sitemap.xml entry. This keeps your sitemap URLs consistent with your canonical URLs.

Alternatively, enable the custom sitemap setting in Webflow and format your URL entries using the canonical domain.

Where: Site settings > SEO

↳ Resources

Customize the root domain in your sitemap.xml address

By default, Webflow adds the auto-generated sitemap.xml file to your site's robots.txt. Remove the default address and add your own to help search engines crawl and index your canonical domain.

Where: Site settings > SEO

↳ Resources

Make a plan for password-protected pages

Webflow's password protection feature isn't compatible with pages served from a subdirectory through your reverse proxy. Password protection is available only for pages served on a root domain or from the origin URL.

Where applicable, consider alternatives for password-protected content that needs to be accessible to visitors.

↳ Resources

Set a base tag and href prefix to ensure links work as expected (where applicable)

The HTML base tag specifies the URL used for relative URLs, such as internal links, on your site. This is usually your canonical domain.

The Href prefix specifies the directory slug under which your site appears, if applicable (e.g., /blog). Depending on your proxy server setup, you may also need to include the subdirectory in the base tag.

Where: Site settings > Custom code

↳ Resources

Configure and test proxy server caching

Webflow automatically invalidates and clears its site cache when you publish so visitors can access the latest version of your site. However, your proxy server may have its own caching mechanisms that also need to be cleared when the site is published.

You can clear your proxy cache manually or trigger cache invalidation programmatically using Webflow's site_publish webhook.

Where: Proxy server setup

↳ Resources

Disable script-deferral features on your CDN (if applicable)

Features like Cloudflare's Rocket Loader defer JavaScript past the DOMContentLoaded event, which can break Webflow interactions, forms, sliders, and custom code. Turn these features off.

Where: CDN settings

↳ Resources

3. QA & testing

0/9 checked

Verify that requests, query strings, pagination, and URLs work correctly through your reverse proxy before launch.

Configure and test handling of site search and query strings

Forward query strings to the correct backend. Your configuration will vary depending on your proxy server.

Example NGINX configuration:

proxy_pass https://$wfbackend$uri$is_args$args;

Webflow's native site search isn't supported across multiple web properties. You may need to modify your site search forms with custom code or consider third-party alternatives such as Swiftype or Algolia.

Where: Proxy server setup

↳ Resources

Configure and test handling of URL parameters

Ensure your proxy server calls the correct backend and preserves URL parameters through your routing rules.

Where: Proxy server setup

Configure and test handling of URL parameters for CMS pagination

Ensure your proxy server calls the correct backend when requesting subsequent pages, especially when using third-party libraries to extend Webflow's CMS.

Example configuration, which may vary by server:

if (req.url.path ~ "([a-f0-9]{8})_page") {set bereq.http.host = var.origin_backend;}## orrewrite ^/(.*)/$ /$1 permanent;

Where: Proxy server setup

Configure and test handling of trailing slashes

Webflow automatically removes trailing slashes from URL requests. Ensure your proxy server handles trailing slashes the same way to prevent redirects to your origin site.

Example configuration, which may vary by server:

set var.path = if (req.url.path ~ "/$", regsub(req.url.path, "/$", ""), req.url.path);

Where: Proxy server setup