WSL2에서 localhost 웹 접속이 느릴 때 – Apache Keep-Alive 설정 혹은 WSL Mirrored 네트워크 모드로 해결

WSL2에서 아파치로 웹 개발을 하다 윈도우 브라우저에서 localhost 접속이 엄청 느린 경우가 있었습니다. 저는 라라벨 프로젝트 개발 중에 이 문제가 답답했는데요.

해결책은 두 가지입니다. 아파치의 keep-alive 시간을 늘리거나, 아예 WSL이 윈도우의 네트워크를 그대로 사용하게 하는 방법이죠(단, 아직 이건 부작용이 있습니다).

증상

저는 라라벨 프로젝트를 개발하고 있었는데, 브라우저에서 TTFB(Time To First Byte)가 2초나 걸렸습니다. 로컬에서 접속하는데도요!

브라우저 개발자 도구의 타이밍을 보면 이렇게 나왔습니다.

차단됨: 2.02초
DNS 확인: 0 ms
연결하기: 2.02초
TLS 설정: 0 ms
보내기: 0 ms
기다리기: 72 ms
받기: 0 ms

차단됨과 연결하기를 합치면 무려 4초가 지연되고 있었습니다.

그런데 라라벨 디버그바를 확인해 보면 PHP 실행 시간은 82ms밖에 안 됐습니다. 뭔가 PHP 실행 전에 4초가 지연되고 있었던 거죠.

더 이상한 건, 새로고침을 연속으로 하면 딜레이가 사라진다는 점이었습니다. 그런데 5초쯤 지나고 나서 새로고침을 하면 다시 4초 딜레이가 생겼습니다.

문제 원인

이건 전형적인 Apache Keep-Alive 타임아웃 문제입니다.

Keep-Alive는 HTTP 연결을 재사용하는 기능인데요. 연결이 끊어진 후 재연결할 때 WSL2 네트워크 스택에서 지연이 발생하는 것으로 보입니다.

Apache의 KeepAliveTimeout 기본값은 버전에 따라 5초 또는 15초입니다. 우분투 24.04에서는 설정 자체가 명시돼 있지 않았는데, 아마 내부적으로는 5초로 동작했던 것 같습니다. 이 시간이 지나면 연결이 끊어지고, 재연결할 때 WSL2 환경에서 4초가량의 지연이 발생하는 것이었습니다.

해결 방법 – Apache Keep-Alive 설정

아파치 설정에서 Keep-Alive 타임아웃을 늘려 줍니다.

sudo nano /etc/apache2/apache2.conf

파일에서 Keep-Alive 관련 설정을 찾아 보세요. 저는 우분투 24.04를 사용하고 있었는데, 설정 자체가 없었습니다. 그래서 파일 끝에 추가했습니다.

KeepAlive On
KeepAliveTimeout 600
MaxKeepAliveRequests 100

저는 타임아웃을 600초(10분)로 설정했습니다. 개발 환경이니까 충분히 여유있게 잡은 거죠.

설정을 저장하고 아파치를 재시작합니다.

sudo service apache2 restart

이렇게 하니까 체감속도가 아주 빨라졌습니다!

해결 방법 2 – WSL2 Mirrored 네트워크 모드

WSL2의 mirrored 네트워크 모드를 사용하면 문제는 근본적으로 해결됩니다.

WSL2는 기본적으로 NAT(Network Address Translation) 방식을 사용하는데, 이걸 mirrored 모드로 바꾸면 Windows의 네트워크 인터페이스를 WSL2에 그대로 미러링합니다.

연결 방식이 단순해져서 속도가 더 빨라지고, localhost 접근도 더 자연스러워집니다.

설정 방법

Windows에서 C:\Users\{사용자명}\.wslconfig 파일을 만들거나 수정합니다. (WSL에서 접근하려면 /mnt/c/Users/{사용자명}/.wslconfig)

[wsl2]
networkingMode=mirrored
dnsTunneling=true

저장 후 WSL을 재시작합니다. 이 명령은 윈도우 CMD나 파워쉘에서 실행행야 합니다.

wsl --shutdown

그리고 다시 WSL을 시작하면 됩니다(wsl).

주의사항

Mirrored 모드는 아주 좋은 기능이지만, 아직 기본값이 아닌 이유가 있습니다.

VPN 사용시 문제가 있을 수 있다고 합니다. Cisco AnyConnect, OpenVPN 같은 기업용 VPN과 충돌하는 경우가 많다고 합니다. 특히 2025년 10월 Windows 업데이트 이후 일부 VPN에서 “No route to host” 에러가 발생하는 버그도 있다고 합니다.

따라서 회사 VPN을 사용한다면 mirrored 모드 사용은 조심하시는 게 좋다고 봅니다. Keep-Alive 설정만으로도 충분히 빠릅니다.

VPN 없이 로컬 개발만 한다면 mirrored 모드를 시도해 볼 만합니다.

정리

WSL2에서 localhost 웹 접속이 느리고, 특히 일정 시간 지난 후 첫 요청이 느리다면 거의 100% WSL과 윈도우 간 네트워크 문제라 할 수 있습니다.

  1. Apache Keep-Alive 타임아웃을 늘려 보세요.
  2. WSL2 mirrored 네트워크 모드를 사용하면 상황을 근본적으로 개선할 수 있습니다. 단, VPN을 사용한다면 mirrored 모드는 충돌할 수 있으니 테스트를 해 보시는 게 좋습니다.

라라벨뿐만 아니라 PHP, Node.js 등 다양한 웹 개발 환경에서 동일하게 적용할 수 있는 해결책입니다. 꼭 아파치를 사용하지 않는다고 해도 말이죠.

WSL2로 개발하시는 분들께 도움이 되길 바랍니다.

카테고리

17년차 풀스택 웹 개발자 Mytory입니다

웹 개발에서도 중요한 것은 개념입니다.
이 블로그에는 제가 개발하며 익힌 개념들을 정리합니다.

워드프레스를 오래 다뤄 왔고 강의도 두 편 찍었습니다.
– 인프런 “워드프레스 제대로 개발하기 어드민 편, 클라이언트 편
– 클래스101 “누구나 할 수 있는 워드프레스 홈페이지 만들기 – 기획부터 출시까지 한 방에 OK

유튜브 채널에 워드프레스 관련 팁들을 올리고 있습니다.

👉 소개 더 보기

대표글

댓글 남기기