Using Next.js rewrites as a reverse proxy
Contents
The following self-hosted proxy isn't provided by PostHog, so we can't take responsibility for it! If unsure, we recommend using our managed reverse proxy.
If you are using the EU cloud then use
euinstead ofusin all domains (e.g.us.i.posthog.com->eu.i.posthog.com).Avoid using generic or common path names like
/analytics,/tracking,/ingest, or/posthogfor your reverse proxy. They will most likely be blocked. Instead, use a non-obvious path name or something random and unique to your application that's unlikely to appear in a filter list.
If you are using Next.js, you can take advantage of rewrites to behave like a reverse proxy. To do so, add a rewrites() function and the skipTrailingSlashRedirect option to your next.config.js file:
Then configure the PostHog client to send requests via your rewrite.
If this isn't working for you (returning
503or400errors), it may be an issue with how your hosting service (such as Heroku or Netlify) handles rewrites. You can write Next.js middleware or use a host-specific proxy (like Netlify) instead. For example, Netlify modifies theContent-Encodingheader when usingrewrites(), which causes PostHog to fail to parse the request. This doesn't happen if you use their_redirectsfile ornetlify.tomloptions.