- Create new API route /api/rybbit/track to proxy Rybbit tracking requests - Extract real client IP from Cloudflare headers (cf-connecting-ip) - Forward X-Forwarded-For and X-Real-IP headers to analytics backends - Update OpenPanel proxy to also forward client IP - Update next.config.ts rewrite to use internal API route This fixes geo-location issues where all traffic appeared to come from Cloudflare edge locations instead of actual visitor countries.
36 lines
771 B
TypeScript
36 lines
771 B
TypeScript
import { NextResponse } from "next/server";
|
|
import type { NextRequest } from "next/server";
|
|
|
|
export function middleware(request: NextRequest) {
|
|
const response = NextResponse.next();
|
|
|
|
const url = request.nextUrl.pathname;
|
|
|
|
if (
|
|
url.startsWith("/sr") ||
|
|
url.startsWith("/en") ||
|
|
url.startsWith("/de") ||
|
|
url.startsWith("/fr") ||
|
|
url === "/"
|
|
) {
|
|
if (
|
|
!url.includes("/checkout") &&
|
|
!url.includes("/cart") &&
|
|
!url.includes("/api/")
|
|
) {
|
|
response.headers.set(
|
|
"Cache-Control",
|
|
"public, max-age=3600, stale-while-revalidate=86400"
|
|
);
|
|
}
|
|
}
|
|
|
|
return response;
|
|
}
|
|
|
|
export const config = {
|
|
matcher: [
|
|
"/((?!_next/static|_next/image|favicon.ico|icon.png|robots.txt|sitemap.xml).*)",
|
|
],
|
|
};
|