Reverse Proxy and Custom Hosting

This content was generated with the assistance of AI and should be verified against the official Webflow documentation before being relied on in production.

This sub-section’s Webflow bibliography lists the reference material consulted while preparing these pages.

This page describes Webflow as it was on 2026-10-28, the date on which its facts were checked against the official documentation. Webflow is a software-as-a-service product with no version numbers, so what follows is dated rather than versioned. Reverse proxy support is one of the details Webflow adjusts without notice, so the Help Center article on setting up a self-managed reverse proxy and the Href prefix setting in the Site settings are the authority; this page explains the reasoning around them. Plans are named by tier only (a paid Site plan, and Enterprise for custom hosting); this page never quotes prices, and Plans, Workspaces, Seats and Roles explains which tier unlocks what.

A Webflow site normally owns a whole host name: every page of www.fernbrook-gardens.example is a Webflow page. A common organizational reality is different. A company already runs its main site on one platform and wants one section, a blog, a garden guide or a campaign, built in Webflow and shown as a subdirectory of the main domain, such as https://fernbrook.example/gardens/, rather than on a separate host name such as gardens.fernbrook.example. Search engines treat a subdirectory as part of the main site, so teams choose it to keep the authority of one domain. Webflow does not publish into a subdirectory of a domain it does not control, so the only way to get there is a reverse proxy: a server the organization operates that receives the visitor’s request for /gardens/... and fetches the answer from Webflow on the visitor’s behalf.

The running example is Fernbrook Gardens, the fictitious botanical garden. Its main website runs on an in-house platform at fernbrook.example, and the marketing team has built the garden guide in Webflow. All host names below are placeholders under the reserved example, example.org and example.com names, so none of them collides with a real site.

The decision first

Before building anything, check whether a reverse proxy is really the right tool. It adds a server to operate, a source of subtle SEO faults and a path that Webflow’s support cannot debug end to end.

Need Simplest fit Reverse proxy needed?

The Webflow section on its own host name (gardens.fernbrook.example)

A custom subdomain connected in Webflow, see Domains, Hosting and Publishing Options

No

The whole site on one domain, hosted by Webflow

A custom domain connected in Webflow

No

Localized subdirectories such as /fr/ and /de/

Webflow Localize publishes locales as subdirectories, see Localization

No

One Webflow section under /gardens/ of a domain served by another platform

A self-managed reverse proxy with the Href prefix setting

Yes

Organizational control of the serving layer: own CDN, WAF, cloud account

Enterprise custom hosting

Not as a hand-built proxy; see below

A server-side application next to the Webflow site on the same domain

Webflow Cloud mounted at a path, see Webflow Cloud

No

Most of the time one of the first rows applies. Reach for a proxy only when the subdirectory is a firm requirement.

How the request travels

The visitor never sees Webflow’s address. They request a URL on the main domain; the main domain’s web server (or load balancer) recognizes the /gardens/ prefix, forwards the request to the Webflow-published custom domain over HTTPS, and streams the answer back. Every other path stays with the original platform.

flowchart TD V[Visitor requests<br/>fernbrook.example/gardens/roses] --> P{Reverse proxy<br/>path starts with /gardens/?} P -->|No| O[Original platform<br/>serves the page] P -->|Yes| H[Proxy sets Host and<br/>X-Forwarded headers,<br/>keeps the query string] H --> W[Webflow custom domain<br/>on a paid Site plan] W --> E[Webflow CDN edge<br/>cached published page] E --> R[Response with links and<br/>assets under /gardens/] R --> P2[Proxy returns the response<br/>to the visitor] O --> P2

Three consequences follow from this picture and drive everything else on the page.

  1. Two systems each believe they own the address. Webflow generates absolute and root-relative URLs for links, assets, canonical tags and the sitemap. If it does not know about the /gardens/ prefix, those URLs point to the wrong place. This is what the Href prefix setting is for.

  2. The proxy sits in the cache path. Webflow publishing refreshes Webflow’s own edge cache. A second cache in the proxy can keep an old page alive after a publish.

  3. The proxy is now part of the site’s availability and security. If it is down, slow or misconfigured, the section is down, whatever Webflow’s status page says.

What Webflow documents

Webflow’s Help Center article on setting up a self-managed reverse proxy, together with the Href prefix setting in the site’s hosting settings, defines the supported arrangement. As of 2026-10-28 the official documentation establishes these points.

Topic What the documentation says

Who runs the proxy

The proxy is self-managed: the organization installs, secures and operates it. Webflow supplies the published site and the settings, not the proxy server

What the proxy targets

A custom domain connected to the Webflow site on a paid Site plan. Proxying the webflow.io staging domain is not supported

Query strings

The proxy must forward query strings unchanged, because pagination, filters and tracking parameters depend on them

Request headers

The proxy must pass the original Host information and the usual X-Forwarded-* headers, so Webflow can see the original request

Caching

The proxy must not add caching that serves stale or incorrect content after a publish

Third-party proxy services

Proxying through third-party services, such as Cloudflare Workers or CDN proxy products, is not supported

Href prefix

A setting that tells Webflow the subdirectory prefix the site is served under, so generated links and assets include it

Two sentences in that table deserve emphasis. First, never proxy webflow.io: the staging domain is for review, it is not indexed, and its behaviour is not covered by the proxy documentation. Second, the supported arrangement is a proxy that the organization runs itself. Teams often assume that an edge worker on a CDN is just "a smaller reverse proxy"; Webflow’s documentation says that third-party proxy services are outside what it supports, so a problem found in such a setup is the customer’s to solve.

Because the proxy fetches the page from the custom domain over HTTPS, the TLS rules in Domains, Hosting and Publishing Options still apply to the Webflow side of the connection: the custom domain must be connected and its certificate issued before the proxy can reach it.

The Href prefix

Without any configuration, a Webflow page at /roses contains links such as /visit and assets such as /css/site.css or an image on Webflow’s asset CDN. Served under /gardens/ through a proxy, a visitor who clicks /visit would leave the section and land on the main platform’s /visit page, which is not what the author meant.

The Href prefix setting solves exactly this. The site owner enters the subdirectory, for Fernbrook /gardens, and Webflow prefixes the generated internal links with it when the site is published. The result is a page that is correct when it is read from fernbrook.example/gardens/roses.

What the prefix affects, and what it does not, is the most common point of confusion.

Item Under the prefix? Notes

Internal page links (Link to page)

Yes

Webflow writes /gardens/visit instead of /visit

CMS item links from Collection lists

Yes

The item URL comes from the collection page slug plus the item slug, then the prefix is added

Canonical tag

Check after publishing

It must show the public address https://fernbrook.example/gardens/roses, not the Webflow domain

Sitemap URLs

Check after publishing

Entries must carry the public host and the prefix

Image and file URLs on the Webflow asset CDN

They stay on the CDN

Assets are normally absolute CDN URLs and are not served through the proxy

Hard-coded links typed into a Rich text field, an embed or custom code

No

Prefix them by hand or use links the Designer generates

Form action and submission

See the forms section below

Submissions go to Webflow, not through the prefix

The practical rule: after every change to the prefix, publish and then read the published HTML (View source) of one page of each type, a static page, a CMS template page and a 404, and check the links, the canonical tag and the og:url value.

Because the prefix is part of how Webflow renders links, it is a site-wide setting, so plan one subdirectory per Webflow site.

A worked nginx example

Fernbrook’s main platform is served by nginx. The Webflow site is published to the custom domain gardens-origin.fernbrook.example.com, which is connected in Webflow on a paid Site plan, and the Href prefix is set to /gardens. The proxy configuration below forwards every request whose path starts with /gardens/ to Webflow and leaves everything else to the in-house application.

# /etc/nginx/conf.d/fernbrook.conf  (placeholder host names)
upstream webflow_origin {
    server gardens-origin.fernbrook.example.com:443;
    keepalive 16;
}

server {
    listen 443 ssl;
    server_name fernbrook.example;

    ssl_certificate     /etc/ssl/fernbrook/fullchain.pem;
    ssl_certificate_key /etc/ssl/fernbrook/privkey.pem;

    # Everything outside the section stays on the in-house platform.
    location / {
        proxy_pass http://127.0.0.1:8080;
    }

    # The Webflow section. No URI after the host in proxy_pass, so the
    # original path and the query string are forwarded unchanged.
    location /gardens/ {
        proxy_pass https://webflow_origin;

        proxy_http_version 1.1;
        proxy_set_header Connection "";

        # Tell the origin which host it is dealing with.
        proxy_set_header Host              gardens-origin.fernbrook.example.com;
        proxy_set_header X-Forwarded-Host  $host;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # SNI is required for the origin's certificate to be selected.
        proxy_ssl_server_name on;
        proxy_ssl_name        gardens-origin.fernbrook.example.com;

        # Webflow's CDN already caches; do not add a second cache here.
        proxy_cache off;

        proxy_redirect off;
        proxy_read_timeout 30s;
    }

    # Visiting /gardens (no slash) should reach the section as well.
    location = /gardens {
        return 301 /gardens/;
    }
}

The directives that matter, and why each is there:

  • proxy_pass https://webflow_origin; has no path after the upstream name. In nginx that means the request URI, including the query string, is passed on exactly as received, which satisfies the requirement to forward query strings. Adding a trailing slash or path would silently rewrite the URI and drop the prefix.

  • proxy_set_header Host sends the Webflow custom domain, because the origin selects the site from the host name it receives. X-Forwarded-Host, X-Forwarded-For and X-Forwarded-Proto carry the original host, the visitor’s address and the original scheme, which are the headers the documentation asks the proxy to pass.

  • proxy_ssl_server_name on enables SNI. Without it the TLS handshake with the Webflow-hosted domain may select the wrong certificate and fail.

  • proxy_cache off keeps the proxy out of the cache path; publishing in Webflow then takes effect as soon as Webflow’s own edge is refreshed.

  • The upstream uses a custom domain, never fernbrook-gardens.webflow.io.

This listing is a starting point written for this page. The Webflow article is the reference for the exact header set and for how the path should be forwarded for your configuration; compare the two before going live, and test with curl -I against both the public path and the origin.

A quick check from a shell, with the query string intact:

curl -sI "https://fernbrook.example/gardens/roses?utm_source=newsletter" | head -n 12
curl -s  "https://fernbrook.example/gardens/roses" | grep -E '<link rel="canonical"|property="og:url"'

What is and is not supported

Setup Supported Why

Self-managed proxy in front of a Webflow custom domain, with the Href prefix

Yes

The arrangement the documentation describes

Proxying the webflow.io staging domain

No

Staging is for review and is not a production endpoint

Cloudflare Workers, CDN proxy products or other third-party proxy services as the proxy

No

The documentation excludes third-party proxy services

A proxy that drops the query string

No

Required by the documentation

A proxy that caches Webflow responses on its own

Avoid

Causes stale pages after publishing

A free Starter site behind a proxy

No

A custom domain on a paid Site plan is required

Serving Webflow at the root of another host name

Not a proxy case

Connect the custom domain directly

Enterprise custom hosting

Yes, by agreement

A separate arrangement with Webflow, below

A Webflow Cloud app at a mount path

Yes

Documented separately, below

A related and frequent question is whether the DNS provider may proxy the Webflow custom domain, for example with an orange-cloud record at a DNS host. That is a different layer from the proxy this page describes and is discussed in Domains, Hosting and Publishing Options.

SEO considerations

A proxy that goes wrong is usually discovered in Search Console weeks later. The checklist below is what to inspect on every release.

Canonical URLs

Every page must declare https://fernbrook.example/gardens/... as canonical. If a page declares the Webflow origin domain, search engines may index the origin, creating a duplicate of the section on a host nobody meant to publish. The site-wide canonical setting is described in SEO and AEO.

Sitemap and robots.txt

Webflow generates the sitemap for the domain it serves. Under a proxy, the sitemap file lives at the origin host’s /sitemap.xml, while crawlers look at fernbrook.example/sitemap.xml, which belongs to the original platform. The usual approach is to add the Webflow sitemap to the main sitemap index by reference, or to proxy /gardens/sitemap.xml as well, and to check that the URLs inside use the public host and prefix. robots.txt is read only at the root of the host, so the main platform’s file must not disallow /gardens/ and must list the sitemap.

Redirects

301 redirects configured in Webflow apply to the Webflow site’s own paths. The proxy must pass redirect responses through without rewriting them (proxy_redirect off in the example), and each redirect target should include the prefix, because the visitor’s browser follows it on the public domain. Redirects for paths outside /gardens/ belong to the main platform. See Redirects and Site Migration.

Duplicate content and the origin domain

Keep the origin custom domain out of search results. Use the canonical tag, do not link to the origin from anywhere, and consider restricting access to the origin domain to the proxy’s address range where the infrastructure allows it.

Cookies, forms and dynamic behaviour

Cookies set by the Webflow origin are scoped to the origin host unless the proxy rewrites them. For a read-only content section this rarely matters. It does matter for three features.

  • Forms. A Webflow form submits to Webflow, which stores the submission and sends notifications. Submissions are processed by the form service, so they do not depend on the proxy path in the same way as pages, but a redirect after a successful submission and any custom thank-you page URL must include the prefix. See Forms.

  • Password-protected pages. The password gate sets a cookie. Test the gate end to end through the public path, with a clean browser profile, since the cookie scope can differ from direct access. See Password Protection and Site Search.

  • Analytics and consent. A script loaded from the main platform and a script embedded in Webflow now run on the same public host. Make sure the consent banner of the main platform covers the Webflow section, and that analytics treats both as one site.

CMS item URLs follow the same rule as other links. The collection page for the garden guide, with the slug plants, produces item pages such as /gardens/plants/rosa-gallica once the prefix applies. Collection settings, template pages and the redirect rules for changed slugs are in Collection Template Pages. Assets uploaded to the Assets panel are served from Webflow’s asset CDN with their own URLs, as covered in Images and Assets; they do not go through the proxy, which also keeps the proxy’s bandwidth low.

Pitfalls

Pitfall Symptom Fix

Prefix set in Webflow but not in the proxy, or the other way round

Links land on 404 or on the main platform

Make the proxy location and the Href prefix identical, including the leading slash

Proxy points at webflow.io

Works in a test, then pages drop out of the index or behave differently

Use a custom domain connected on a paid Site plan

proxy_pass with a trailing URI

The prefix is stripped, so the origin receives a different path than the one the Href prefix setting expects

Remove the URI from proxy_pass and compare with the article

Query string removed

Pagination, filters and campaign tags stop working

Forward the unchanged request URI

Wrong Host header

The origin returns a different site or an error page

Send the custom domain as Host

Missing SNI

TLS handshake failure or a certificate mismatch

Enable the server-name option for the upstream

Extra caching

A published change does not appear

Disable proxy caching for the section

Canonical or sitemap shows the origin host

Duplicate pages indexed

Set the public canonical, publish, and check the sitemap

Cloudflare Workers or another third-party proxy used

No support from Webflow when it breaks

Run the proxy yourself or use Enterprise custom hosting

Hard-coded absolute links in embeds

Visitors leave the section

Prefix them or generate them with the Designer’s link controls

Origin domain left open to the world

Duplicate content and bypass of the main platform’s security rules

Restrict access to the proxy where possible

Security considerations

The proxy is a public-facing server. The usual obligations apply.

  • Keep TLS current on both legs. The visitor-to-proxy leg uses the main platform’s certificate; the proxy-to-Webflow leg uses the custom domain’s certificate described in Domains, Hosting and Publishing Options.

  • Mind forwarded headers. The proxy should set X-Forwarded-For from the real connection and not blindly trust a value sent by the client, otherwise visitors can fake their address in the Webflow-side analytics.

  • Own the security headers. On a standard Webflow site, custom security headers are an Enterprise feature of the Webflow-hosted site. Behind a proxy the main platform can add headers such as Strict-Transport-Security and X-Content-Type-Options to the /gardens/ location, which is a legitimate use of the proxy, but a header added there applies to the whole section and can conflict with what the origin sends.

  • Do not put secrets in the proxy rule for the section. Basic-auth credentials, API tokens and similar values belong in the proxy’s secret store, not in a configuration file that is committed to a repository.

  • Rate limits and abuse protection of the main platform now apply to the section as well; check that a limit tuned for the application does not block normal browsing of the Webflow pages.

Enterprise custom hosting

When the reason for the proxy is organizational control, such as serving the site from the company’s own cloud account, behind its own web application firewall or on its own CDN, the supported route is Webflow Custom Hosting, an Enterprise arrangement. The official FAQ describes it as a way for an Enterprise customer to host a Webflow site on infrastructure it controls; the contract and the FAQ define who is responsible for the certificate, caching, availability and security of that layer, and which Webflow features continue to work. Because a hand-built proxy is the customer’s responsibility and custom hosting is a product with a defined scope, teams that need more than a path mapping should talk to Webflow’s sales team before building their own.

The comparison below shows how the options differ.

Self-managed reverse proxy Enterprise custom hosting Webflow Cloud mount path

Plan

Paid Site plan with a custom domain

Enterprise

Webflow Cloud on a Webflow site

Who runs the serving layer

The organization’s proxy

The organization, by agreement

Webflow

Typical goal

A Webflow section under another platform’s domain

Control over infrastructure and compliance

A server-side app next to the site

Where the content lives

A Webflow site

A Webflow site

Code in a Git repository

Caching

Must not add stale caching

Defined by the arrangement

Managed by Webflow Cloud

Webflow Cloud mount paths as the alternative

The mirror image of the problem is also common: instead of putting a Webflow section under another platform, the organization wants an application under the Webflow domain. Webflow Cloud covers that case with mount paths. Each environment of a Webflow Cloud app gets a unique path under the site’s domain, so an application is reachable at, for example, www.fernbrook-gardens.example/planner, while the rest of the domain remains the Webflow site. The developer documentation notes that a mount path must be unique across all environments of an app, can be changed later and then needs a redeploy, and that if a Webflow Cloud route and a Webflow page use the same path, the Cloud app takes precedence. No proxy of your own is involved, because Webflow does the routing.

For Fernbrook, the Visit Planner is therefore mounted at /planner on the Webflow-hosted domain, whereas the garden guide under /gardens/ of the old platform needs the proxy. The two techniques solve opposite problems: a proxy places Webflow inside someone else’s domain, a mount path places someone else’s code inside Webflow’s domain. Details, build settings and environments are in Webflow Cloud and Webflow Cloud Deployments and Environments.

A fourth route is to move the other platform’s sections to Webflow gradually, using 301 redirects and a staged migration, so that the proxy is temporary. That pattern is described in Redirects and Site Migration.

Operating the proxy

A proxy is permanent infrastructure, so give it the same care as any production service.

  1. Monitor the origin. Probe the Webflow custom domain and the public path separately, so an outage can be attributed to the right layer. The Webflow status page is at status.webflow.com.

  2. Test after each publish. A small smoke test that requests the home page of the section, one CMS item, a missing page and the sitemap, and compares the canonical URL, is cheap and catches prefix mistakes early.

  3. Record the contract. Write down the prefix, the origin domain, the headers forwarded and the people who may change them, in the same repository as the proxy configuration.

  4. Plan the exit. Keep the origin domain and the redirects ready, so that moving the section to its own subdomain, or to custom hosting, is a configuration change and not a project.

Corrections to older material

Older books and tutorials describe proxying Webflow through an edge worker, or pointing a proxy at the webflow.io address, because for years that was the only available workaround. The current documentation separates the supported self-managed proxy with the Href prefix from those workarounds, and states that third-party proxy services are not supported. Tutorials that predate the Href prefix also rewrite links with scripts after the page loads; that is unnecessary with the setting and harms crawlers, which read the HTML before any script runs. Treat such guides as history, as listed in Where Older Books and Tutorials Are Outdated.