Node.js에서 프록시 설정 방법 (Axios 및 네이티브 Fetch)
업데이트:
Axios 기본 옵션인 proxy: { host, port }는 HTTP CONNECT 터널을 생성하지 않기 때문에 https:// 대상 요청 시 오류가 발생합니다. Node.js 및 TypeScript 환경에서 VinaProxy의 인증된 HTTP(S) 프록시를 통해 깔끔하게 라우팅하려면 Axios에 HttpsProxyAgent(https-proxy-agent)를 전달하거나, Node 내장 fetch()에 undici.ProxyAgent 디스패처를 전달해야 합니다.
new HttpsProxyAgent('http://user:pass@ip:port')- 1개 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
- 1개 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
Axios 및 네이티브 Node.js fetch() 프록시 설정 비교
두 라이브러리 모두 VinaProxy 대시보드에서 제공하는 표준 http://user:pass@ip:port URL 형식을 그대로 수용합니다:
| HTTP 클라이언트 | 사용 NPM 패키지 | 권장 코드 예제 |
|---|---|---|
| Axios | npm i https-proxy-agent | axios.get(url, { httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port'), proxy: false }) |
네이티브 fetch (Node 18+) | npm i undici | fetch(url, { dispatcher: new ProxyAgent('http://user:pass@ip:port') }) |
| Got | npm i hpagent | got(url, { agent: { https: new HttpsProxyAgent({ proxy: 'http://user:pass@ip:port' }) } }) |
Node.js 연결 풀 재사용 및 타임아웃 권장 사항
- Axios에서
httpsAgent를 사용할 때는 시스템 환경 변수HTTP_PROXY와의 충돌을 막기 위해 반드시proxy: false를 함께 명시하세요 - 반복문 외부에서 프록시 IP당
HttpsProxyAgent또는ProxyAgent인스턴스를 한 번만 생성하여 영구 TCP keep-alive 소켓을 효율적으로 재사용하세요 - 당사의 프록시 형식 변환 도구를 이용해 VinaProxy 프록시 목록을 JSON 배열 형태로 바로 내보내어 코드에서 활용할 수 있습니다
단계별 안내
- 1
https-proxy-agent(또는 undici) 설치
Node.js 프로젝트 디렉터리에서
npm install axios https-proxy-agent를 실행합니다. - 2
HttpsProxyAgent 인스턴스 생성
VinaProxy 자격 증명을 사용하여
const agent = new HttpsProxyAgent('http://user:pass@ip:port');를 선언합니다. - 3
Axios에 httpsAgent 및 proxy: false 전달
const res = await axios.get('https://vinaproxy.com/api/my-ip', { httpsAgent: agent, proxy: false, timeout: 10000 });를 호출합니다. - 4
출구 IP 주소 검증
res.data를 로깅하여 요청이 전용 프록시 IP를 정상적으로 통과했는지 확인합니다.
자주 묻는 질문
Axios 기본 proxy: { host, port, auth } 설정이 HTTPS 요청에서 실패하는 이유는?
Axios의 기본 프록시 설정은 HTTP CONNECT TLS 터널을 생성하지 않고 일반 텍스트 HTTP 요청을 전송하기 때문입니다. proxy: false와 함께 httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port')를 지정하면 해결됩니다.
Node.js 18/20/22 내장 fetch()에서 프록시를 사용하는 방법은?
undici 패키지에서 ProxyAgent를 가져온 후 fetch()의 옵션 객체에 { dispatcher: new ProxyAgent('http://user:pass@ip:port') }를 전달하세요.
프록시 목록을 Node.js용 JSON 배열로 변환할 수 있나요?
네. 무료 프록시 형식 변환 도구에 ip:port:user:pass 목록을 붙여넣고 JSON 출력을 선택하시면 바로 변환됩니다.
전용 고정 IP로 Node.js 백엔드 및 웹 스크래퍼 성능을 극대화하세요
글로벌 7개국 지원, 무제한 트래픽의 전용 IPv4 및 고정 ISP 프록시를 즉시 제공합니다.
Node.js 프록시 구매