Axios 에서 http proxy 사용 때 오류 해결방안
외부 서비스와 axios 를 통해 직접 통신하던 프로그램이 proxy 를 사용하는 환경으로 변경되면서 통신에 문제가 생겨서 구글링 후 수정하게 됐다. 이 내요은 특정 상황에서만 적용되기 때문에 모든 환경에 적용될 수는 없을 수도 있다. 우선 기본 환경은 https 요청을 http proxy 를 통해 전달하게 되는데 이 때 Error: write EPROTO 140736379442112:error:140770FC:SSL routines:SSL23
와 유사한 오류가 발생하게 된다. 최신 버전인 0.27.2 를 사용해도 동일하게 문제가 발생.. 오류 메세지만 조금 변경됐을 뿐.. 그래서 관련 내용을 검색해보니 axios 자체가 proxy 환경에서 제대로 작동하지 않는 경우가 생각보다 많다는 것을 알게 됐다. 다행히 github repo 에서 해결책을 찾을 수가 있어서 적용했고 정상 작동하는 것을 확인했다.
우선 프로젝트에 https-proxy-agent
모듈을 설치한다.
npm install https-proxy-agent
axios 를 사용하는 부분의 코드를 아래와 같이 수정한다. axios 에서 httpsAgent 를 사용해서 요청을 처리하도록 수정한 것이다.
const HttpsProxyAgent = require('https-proxy-agent');
const Axios = require('axios');
const httpsAgent = new HttpsProxyAgent({host: '<proxy host>', port: '<proxy port>'});
const axios = axios.create({httpsAgent});
이런 식으로 코드를 수정하면 axios 를 이용해 https 요청을 http proxy 를 통해 처리하는 경우에 정상 처리될 수 있도록 해준다.