www.acme.com/blog to Notra with an AWS CloudFront distribution in front of your website. CloudFront sends the section paths to Notra and everything else to the host that serves your website today, such as S3, a load balancer, Vercel or Webflow. Use the host that actually serves your website, so if acme.com redirects to www.acme.com, put CloudFront in front of www.acme.com. Read the steps on every platform first, and replace acme.notra.site with the Notra address on your site’s Domains page.
If your domain already points at a CloudFront distribution, skip the first step and add the Notra origin and behaviors to that distribution.
1
Create the distribution
In the AWS console, open CloudFront → Create distribution and set:
- Origin domain: a hostname that serves your website and isn’t
www.acme.com, for exampleacme-site.vercel.appor your load balancer’s DNS name. Oncewww.acme.compoints at CloudFront, using it as the origin would send CloudFront’s requests back to itself. This origin keeps serving everything outside your section paths. - Viewer protocol policy: Redirect HTTP to HTTPS.
- Allowed HTTP methods, Cache policy and Origin request policy of the default behavior: what your website needs. CloudFront only allows
GETandHEADby default, so includePOSTif your website has forms or an API, and see AWS’s cache behavior settings for the rest.
wf.acme.com under Site settings → Publishing → Production, make it the default domain and use it as the origin domain. Webflow doesn’t support proxying its *.webflow.io staging addresses. See Webflow’s reverse proxy guide.2
Add Notra as an origin
Open the distribution’s Origins tab, click Create origin and set:
- Origin domain:
acme.notra.site - Protocol: HTTPS only
- Origin path: empty, so
/blog/launchgoes tohttps://acme.notra.site/blog/launch
3
Create an origin request policy
Open CloudFront → Policies → Origin request → Create origin request policy, name it
notra-site and set:-
Headers: All viewer headers except
Host,AuthorizationandX-Vercel-IP-Country - Cookies: None
- Query strings: All
-
Leaving out
Hostlets CloudFront sendHost: acme.notra.site, which Notra needs to find your site. Every other viewer header, includingAcceptandUser-Agent, still reaches Notra. -
Notra doesn’t need cookies or the
Authorizationheader, so your visitors’ sessions stay on your domain. -
Notra reads the visitor’s country from
X-Vercel-IP-Country, so dropping it stops visitors from choosing the country site analytics records.
4
Add a behavior for each section path
Open the Behaviors tab and create two behaviors per section,
/blog and /blog/*, plus /changelog and /changelog/* if the changelog is on. Give each one the same settings:- Don’t use a single
/blog*pattern, because it also matches paths like/blogrollon your website. - CloudFront uses the first behavior whose path pattern matches, in the order the behaviors are listed. If the distribution already has a behavior that matches
/blogor/blog/*, such as/blog*or/*, move the Notra behaviors above it, or that behavior keeps serving the section paths from your old origin and the check fails. - Allowed HTTP methods has to include
POST, because site analytics sends events to/blog/_notra/e. CloudFront only allowsGETandHEADby default, which leaves your pages working but your analytics empty. CachingDisabledleaves caching to Notra, which already sends the rightCache-Controlfor every file. A CloudFront cache would also ignore theAcceptheader and could hand Markdown to browsers or HTML to AI agents.
5
Add your domain to the distribution
In the General tab, click Edit and add
www.acme.com under Alternate domain name (CNAME). Under Custom SSL certificate, pick an AWS Certificate Manager certificate for www.acme.com. CloudFront only lists certificates issued in US East (N. Virginia) us-east-1, so request it there.6
Point your domain at CloudFront with Route 53
In Route 53 → Hosted zones, open your domain’s zone and create a record for
www with Alias turned on, routing traffic to Alias to CloudFront distribution and your distribution. Create it once as type A and once as AAAA. Replace any existing record for www first.With another DNS provider, add a CNAME from www to the distribution’s domain name, for example d111111abcdef8.cloudfront.net.7
Check
Wait until the distribution shows as deployed, open
https://www.acme.com/blog/_notra/probe.txt to confirm it answers, then click Check on the domain in Notra.Limits to keep in mind
- AWS WAF and Bot Control rules can block the check and AI crawlers, so allow your section paths, or at least the user agent
NotraSitesVerifier/1.0. Also make sure WAF doesn’t blockPOSTrequests to/blog/_notra/e. - Redirects from Notra reach the browser unchanged, because CloudFront never follows an origin’s redirects, so your
blog.jsonredirects work without extra setup. - Visitor addresses. CloudFront adds the visitor’s IP to
X-Forwarded-For, so site analytics can tell visitors apart. Notra doesn’t read CloudFront’s country headers, so those visits show without a country. - Webflow, Squarespace, Wix and other site builders can’t forward paths themselves. Put CloudFront in front of them with this guide, using an origin hostname the builder serves for you that isn’t your public
www.acme.com, or use a Cloudflare Worker if your domain is on Cloudflare.