fix(analytics): properly forward client IPs to Rybbit and OpenPanel
- 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.
This commit is contained in:
@@ -38,6 +38,7 @@ export default function ProductCard({ product, index = 0, locale = "sr" }: Produ
|
||||
fill
|
||||
className="object-cover object-center transition-transform duration-700 ease-out group-hover:scale-105"
|
||||
sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 25vw"
|
||||
loading={index < 4 ? "eager" : "lazy"}
|
||||
/>
|
||||
) : (
|
||||
<div className="absolute inset-0 flex items-center justify-center text-[#999999]">
|
||||
|
||||
@@ -1,24 +1,13 @@
|
||||
"use client";
|
||||
|
||||
import dynamic from "next/dynamic";
|
||||
|
||||
const OpenPanelComponent = dynamic(
|
||||
() => import("@openpanel/nextjs").then((mod) => mod.OpenPanelComponent),
|
||||
{ ssr: false }
|
||||
);
|
||||
// AnalyticsProvider - placeholder for future analytics integrations
|
||||
// Currently only Rybbit is used via the script tag in layout.tsx
|
||||
|
||||
interface AnalyticsProviderProps {
|
||||
clientId: string;
|
||||
clientId?: string;
|
||||
}
|
||||
|
||||
export default function AnalyticsProvider({ clientId }: AnalyticsProviderProps) {
|
||||
return (
|
||||
<OpenPanelComponent
|
||||
clientId={clientId}
|
||||
trackScreenViews={true}
|
||||
trackOutgoingLinks={true}
|
||||
apiUrl="/api/op"
|
||||
scriptUrl="/api/op1"
|
||||
/>
|
||||
);
|
||||
// No-op component - Rybbit is loaded via next/script in layout.tsx
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user