로컬 컴퓨터에서 XAMPP나 WAMP 또는 기타 웹 서버를 운영하다가 'localhost에서 연결을 거부했습니다(Localhost refused to connect)' 오류 메시지를 마주했다면, 대부분 설정 문제일 가능성이 높습니다. 이 오류는 localhost가 127.0.0.1 주소와 올바르게 연결되지 않았거나, 해당 파일에 접근할 권한이 부족한 경우에도 발생할 수 있습니다.
localhost 즉 127.0.0.1은 인터넷상의 서버가 아니라 여러분의 컴퓨터에서 실행 중인 웹 서버의 IP 주소입니다. 따라서 인터넷 연결이 없어도 접근이 가능합니다. 앱 테스트, 기존 애플리케이션 수정 등 개발 작업을 온라인 운영 서버가 아닌 로컬 환경에서 진행하면, 실제 서비스 환경에 영향을 주지 않고 버그를 자유롭게 발견하고 수정할 수 있다는 큰 장점이 있습니다. Microsoft Visual Studio나 Visual Studio Code로 Android 앱 등을 개발하면서 프로젝트를 로컬 웹 서버에 연결할 때 이 오류를 겪는 경우도 종종 있습니다.
이 오류는 다양한 원인으로 발생하며, 정확한 원인은 상황마다 다릅니다. 따라서 해결 방법을 살펴보기 전에 먼저 오류의 주요 원인부터 짚어보겠습니다.
오류의 주요 원인
- localhost가 127.0.0.1과 연결되지 않음 — 컴퓨터의 localhost가 127.0.0.1 주소와 제대로 매핑되지 않은 경우입니다. 이 경우 브라우저에 localhost를 입력하거나 명령 프롬프트에서 ping 명령을 실행해도 로컬 웹 서버에 접속할 수 없습니다.
- WSL(Windows Subsystem for Linux)에서 웹 서버 실행 — WSL 내 리눅스 배포판에서 웹 서버를 구동하는 경우, Windows의 LxssManager 서비스가 문제의 원인이 되는 때가 있습니다.
- 80번 포트를 다른 프로그램이 사용 중 — 컴퓨터의 80번 포트를 다른 애플리케이션이 점유하고 있으면 이 오류가 발생할 수 있습니다. 과거 Skype가 80번 포트를 사용했기 때문에, Skype를 켠 상태에서는 WAMP나 XAMPP의 아파치 서버가 정상적으로 구동되지 않는 문제가 자주 있었습니다.
- 잘못된 포트로 접속 시도 — 웹 서버가 기본 포트인 80번이 아닌 다른 포트로 설정되어 있는데, 브라우저에서 기본값인 localhost(80번 포트)로 접속을 시도하는 경우에도 이 오류가 나타납니다.
- 권한 부족 — 로컬 웹 서버 내의 특정 파일이나 디렉터리에 현재 사용자 계정이 접근할 권한이 없는 경우에도 오류가 발생할 수 있습니다.
원인을 파악했다면, 이제 각 상황에 맞는 해결 방법을 하나씩 살펴보겠습니다.
1. XAMPP 또는 WAMP에서 아파치 웹 서버 포트 변경하기
가장 일반적인 해결책은 XAMPP나 WAMP 사용 시 아파치 웹 서버의 포트를 변경하는 것입니다. 보통 컴퓨터에서 실행 중인 다른 프로그램이 80번 포트를 선점하여 아파치가 해당 포트를 사용하지 못하게 되는 경우가 많습니다. 이럴 때는 아파치가 실행 중이라 하더라도 해당 포트로 웹 페이지를 불러올 수 없습니다.
XAMPP에서 아파치 포트 변경하기
- 먼저 시작 메뉴에서 XAMPP를 실행합니다.
- 작업표시줄의 시스템 트레이에서 XAMPP 아이콘을 찾아 더블클릭합니다.
- XAMPP 제어판(Control Panel) 창이 열리면 현재 실행 중인 서비스 목록(아파치, MySQL 등)을 확인할 수 있습니다.
- 서비스 이름 옆의 'Stop' 버튼을 클릭해 apache 서비스를 중지합니다.
- Windows 탐색기를 열고 C:\xampp\apache\conf 폴더로 이동한 뒤, httpd.conf 파일을 찾습니다.
- 메모장이나 선호하는 편집기로 파일을 열고 다음 두 줄을 검색합니다.
Listen 80
ServerName localhost:80 - 해당 줄을 찾았다면 아래와 같이 변경합니다.
Listen 8080
ServerName localhost:8080 - 파일을 저장합니다. 저장 시 관리자 권한을 요구하는 대화상자가 나타나면 '예(Yes)'를 클릭합니다.
- XAMPP 제어판을 다시 열고 아파치 웹 서버를 시작합니다.
- 포트 충돌이 원인이었다면 이 과정만으로 오류가 해결됩니다.
WAMP에서 아파치 포트 변경하기
WAMP에서 포트를 변경하려면 먼저 WAMP를 완전히 종료해야 합니다.
- 작업표시줄을 우클릭하고 '작업 관리자(Task Manager)'를 선택해 엽니다.
- 작업 관리자에서 WAMP 관련 프로세스가 실행 중인지 확인하고, 있다면 '작업 끝내기(End Task)' 버튼을 클릭해 모두 종료합니다.
- 바탕화면의 '내 PC'를 더블클릭해 Windows 탐색기를 연 후, C:\wamp\Apache2\conf 폴더로 이동하여 httpd.conf 파일을 메모장 등 편집기로 엽니다.
- 파일 안에서 다음 두 줄을 검색합니다.
Listen 80
ServerName localhost:80 - 찾은 후 아래와 같이 수정합니다.
Listen 8080
ServerName localhost:8080 - 파일을 저장한 뒤 WAMP를 다시 실행하고 오류가 사라졌는지 확인합니다.
2. 127.0.0.1 주소로 localhost 접속하기
앞서 언급했듯이, 이 오류는 localhost가 127.0.0.1 주소와 제대로 연결되지 않았을 때도 발생합니다.
이 문제를 확인하려면 XAMPP나 WAMP로 웹 서버를 시작한 뒤, 브라우저 주소창에 127.0.0.1을 입력하고 Enter 키를 눌러보세요. 이 주소로 웹 서버에 접속된다면 localhost가 해당 IP를 가리키지 않고 있는 것이므로, 이후에는 localhost/filename 대신 127.0.0.1/filename 형식으로 프로젝트나 파일에 접근하면 됩니다.
3. LxssManager 서비스 재시작하기 (WSL 사용 시)
Node.js 애플리케이션 개발 등을 위해 WSL(Windows Subsystem for Linux)에서 웹 서버를 구동 중인데 이 오류가 발생한다면, 가장 간단한 해결책은 LxssManager 서비스를 재시작하는 것입니다. 아래 순서대로 진행하세요.
- 키보드에서 Windows 키 + R을 눌러 '실행(Run)' 대화상자를 엽니다.
- 실행 창에 services.msc를 입력하고 Enter 키를 누릅니다.
- Windows 서비스 앱이 열리고, 컴퓨터에서 사용 가능한 모든 서비스 목록이 표시됩니다.
- 서비스 목록에서 LxssManager를 찾습니다.
- 항목을 우클릭한 후 드롭다운 메뉴에서 '다시 시작(Restart)'을 선택합니다. 또는 더블클릭해 '속성(Properties)' 창을 연 뒤 서비스를 중지하고, 다시 '시작(Start)'을 클릭해 재시작할 수도 있습니다.
- 완료 후 웹 서버에 다시 접속해 보세요. LxssManager 서비스 문제가 원인이었다면 정상적으로 작동할 것입니다.
4. 포트 번호를 지정하여 localhost 접속하기
웹 서버가 기본 포트인 80번이 아닌 다른 포트에서 실행 중이라면, 포트 번호를 직접 지정해서 접속할 수 있습니다. 일반적으로 사용되는 포트는 80 또는 8080입니다.
브라우저 주소창에 localhost:8080을 입력하면 됩니다. 참고로 80은 브라우저가 온라인·오프라인 웹 서버에 접속할 때 기본적으로 사용하는 포트이므로, 굳이 localhost:80처럼 입력할 필요는 없습니다.
5. application.config 파일 삭제하기 (Visual Studio 사용 시)
Visual Studio에서 ASP.NET 개발을 진행하다가 이 오류를 만났다면 걱정하지 않아도 됩니다. .vs 폴더 안에 있는 application.config 파일을 삭제하면 해결되는 경우가 많습니다. 이 폴더는 숨김 처리되어 있을 수 있으므로, Windows 탐색기에서 숨김 파일이 보이도록 설정되어 있는지 먼저 확인하세요.
- 프로젝트 폴더를 연 뒤 .vs 폴더를 엽니다. 이 폴더가 보이지 않는다면 숨김 폴더이므로, Windows 탐색기의 폴더 옵션에서 '숨김 파일 및 폴더 표시'를 활성화해야 합니다.
- .vs 폴더 안에서 config 폴더를 엽니다.
- config 폴더 안의 application.config 파일을 삭제합니다.
- IIS Express를 사용해 ASP.NET 프로젝트를 진행 중이었다면, 이 과정으로 Visual Studio가 localhost에 연결하지 못하는 문제가 해결될 것입니다.
위의 방법들을 차례대로 적용해 보면 대부분의 'localhost에서 연결을 거부했습니다' 오류를 해결할 수 있습니다. 원인에 맞는 해결책을 적용해 쾌적한 로컬 개발 환경을 유지하시기 바랍니다.