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 ( |
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 |
Webflow Localize publishes locales as subdirectories, see Localization |
No |
One Webflow section under |
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.
Three consequences follow from this picture and drive everything else on the page.
-
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. -
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.
-
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 |
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 |
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 ( |
Yes |
Webflow writes |
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 |
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/;
}
}
Source: nginx: ngx_http_proxy_module
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 Hostsends the Webflow custom domain, because the origin selects the site from the host name it receives.X-Forwarded-Host,X-Forwarded-ForandX-Forwarded-Protocarry 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 onenables SNI. Without it the TLS handshake with the Webflow-hosted domain may select the wrong certificate and fail. -
proxy_cache offkeeps 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"'
Source: nginx: proxy_pass
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 |
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.
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 |
Proxy points at |
Works in a test, then pages drop out of the index or behave differently |
Use a custom domain connected on a paid Site plan |
|
The prefix is stripped, so the origin receives a different path than the one the Href prefix setting expects |
Remove the URI from |
Query string removed |
Pagination, filters and campaign tags stop working |
Forward the unchanged request URI |
Wrong |
The origin returns a different site or an error page |
Send the custom domain as |
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-Forfrom 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-SecurityandX-Content-Type-Optionsto 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.
-
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.
-
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.
-
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.
-
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.