Next.js에서 IP 주소를 이용한 사용자 분류 방법
KUKJIN LEE • 3주 전 작성
사용자의 IP 주소를 기반으로 위치 정보를 추출하여 Next.js 애플리케이션에서 사용자 맞춤형 경험을 제공하는 방법을 소개합니다. 이 글에서는 Next.js의 middleware
를 사용하여 사용자를 위치에 따라 분류하는 간단한 방법을 다룹니다. Geolocation API와 IP 주소 파싱을 활용하여 사용자에게 보다 개인화된 콘텐츠를 제공하는 방법을 구현해 보세요.
Middleware로 사용자 위치 정보 추출하기
Next.js에서는 middleware를 사용하여 서버 측에서 사용자 요청을 가로채고 처리할 수 있습니다. 여기서 사용자의 IP 주소를 파싱하여 위치 정보를 추출하고, 해당 정보를 활용해 사용자를 분류하거나 특정 페이지로 리다이렉트하는 방식으로 개인화된 경험을 제공할 수 있습니다.
(사실 Next.js Middleware는 백엔드 로직에서 IP 기반 위치 데이터를 파싱하는 작업을 수행하지만, 그 결과는 맞춤형 프론트엔드 경험을 개선하는 데 활용됩니다. 따라서 프론트엔드 카테고리에 국한된 내용이 아닙니다.)
IP 주소 추출 및 Geolocation 라이브러리 사용하기
사용자의 IP 주소는 req.headers['x-forwarded-for']
또는 req.ip
를 통해 추출할 수 있습니다. 이 정보를 활용해 geoip-lite 같은 라이브러리를 사용하여 사용자의 위치(국가, 도시 등)를 파악할 수 있습니다.
Middleware 코드 예시
import { NextResponse } from 'next/server';
import geoip from 'geoip-lite';
export function middleware(req) {
const ip = req.headers.get('x-forwarded-for') || req.ip || '127.0.0.1';
const geo = geoip.lookup(ip);
if (geo) {
// 예: 한국 사용자는 /kr 페이지로 리다이렉트
if (geo.country === 'KR') {
return NextResponse.redirect('/kr');
}
}
return NextResponse.next();
}
사용자 맞춤형 경험 제공하기
사용자의 위치 정보를 이용하여 언어 설정, 지역별 맞춤형 콘텐츠, 또는 로컬화된 프로모션을 제공할 수 있습니다. 이를 통해 사용자 만족도를 높이고 이탈률을 낮출 수 있습니다.
주의사항
-
프록시나 VPN 사용 시 IP 주소 정보가 정확하지 않을 수 있습니다.
-
GDPR 등의 개인정보 보호 규정을 준수하기 위해 사용자의 동의 없이 위치 정보를 사용하는 것은 피해야 합니다.
국가 별 위치 정보 수집에 대한 법적 규제가 다르기 때문에, 사용자 동의를 얻는 것이 중요합니다.