
Axios 프록시 서버 설정의 함정
axios 요청에는 proxy
속성이 있어 Node.js에서 프록시로 사용할 수 있습니다. 하지만 HTTPS 요청을 프록시할 때 문제가 발생하므로 사용하지 않는 것이 좋습니다.
import axios from "axios";
axios.get("https://example.com", {
proxy: {
host: "127.0.0.1",
port: 7890,
},
});
HTTP 프록시를 통해 HTTPS 요청을 할 때는 먼저 CONNECT 메서드를 보내 프록시 서버에 대상 서버로의 TCP 터널을 설정하도록 알려야 합니다. 그렇지 않으면 프록시 서버는 대상 서버의 443 포트로 암호화되지 않은 요청만 보내게 되어 오류가 발생합니다. 제가 설명하는 내용이 이해하기 어렵다면 이 글을 참고하세요.
올바른 구현은 curl 명령어를 참고할 수 있습니다. Node.js로 HTTP 프록시(127.0.0.1:1025)를 설정한 후, curl 명령어로 HTTPS 요청을 보내보세요. 프록시 서버 로그를 보면 처음에 CONNECT 메서드가 전송되는 것을 확인할 수 있습니다.
curl -v -X POST -x 127.0.0.1:1025 <https://cloudflare.com/>