VMware와 Nginx를 사용하여 Ubuntu VM에 웹사이트를 호스팅하고 로드되지 않을 때 문제 해결 방법 (단계별 가이드)
Source: Dev.to
기술 스택
- 호스트 OS: Windows 10/11
- 게스트 VM: Ubuntu Linux
- 가상화: VMware Workstation
- 웹 서버: Nginx
- 원격 접속: SSH (PowerShell에서)
Nginx를 설치한 이유
Nginx를 설치한 목적은:
- Linux 서버에서 웹 서비스를 호스팅해 보기
- **Windows (호스트)**와 Ubuntu VM (게스트) 간 네트워킹 테스트
- 방화벽, 포트, VM 네트워킹 등 실제 현장 문제 해결 연습
- AWS EC2와 DevOps 작업에 바로 적용 가능한 스킬 습득
설정 개요
- 호스트 OS: Windows
- VM: VMware Workstation에 설치된 Ubuntu
- 접근 방법: PowerShell에서 SSH
- 목표: Windows 브라우저에서 VM의 웹 페이지에 접근
단계별 진행
1️⃣ PowerShell에서 SSH로 Ubuntu VM에 연결
ssh alok@
2️⃣ Ubuntu에 Nginx 설치 및 시작
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
Nginx가 실행 중인지 확인:
sudo systemctl status nginx
VM 내부에서 로컬 테스트:
curl http://localhost
✅ Nginx가 VM 내부에서 정상 작동합니다.
3️⃣ VM의 IP 주소 확인
hostname -I
예시 출력: 192.168.80.129
4️⃣ Windows 브라우저에서 접근 시도
Chrome에서 http://192.168.80.129 열기.
❌ 문제: 페이지가 계속 로드됨 → ERR_CONNECTION_TIMED_OUT
5️⃣ Ubuntu 방화벽(UFW) 확인
sudo ufw status
출력 내용:
- 포트 22 (SSH) 허용
- 포트 3000, 5000, 8000 허용
- 포트 80 허용되지 않음
해결: HTTP(포트 80) 허용
sudo ufw allow 80/tcp
sudo ufw reload
브라우저는 여전히 타임아웃 → 방화벽만이 원인이 아니었습니다.
6️⃣ Nginx 자체가 정상인지 확인
sudo systemctl status nginx
curl http://localhost
결과: Nginx가 실행 중이며 curl이 성공합니다.
결론: 애플리케이션 레이어는 정상이며, 문제는 Windows ↔ VM 간 네트워킹에 있습니다.
7️⃣ VMware 네트워크 모드 확인
- VMware → VM Settings → Network Adapter
- 모드: NAT (이미 선택됨)
NAT 설정 자체는 문제 없었지만, NAT 서비스가 손상됐을 가능성이 있습니다.
8️⃣ VMware NAT 네트워킹(호스트 측) 복구
Windows에서:
Win + R을 눌러services.msc실행.- 다음 서비스를 재시작:
- VMware NAT Service
- VMware DHCP Service
이 작업으로 Windows와 VM 사이의 네트워크 경로가 복구되었습니다.
9️⃣ Windows에서 다시 테스트
Chrome에서 http://192.168.80.129 열기.
✅ Nginx 페이지가 정상적으로 로드 – 문제 해결! 🎉
근본 원인 요약
| 레이어 | 수정 전 상태 | 수정 후 상태 |
|---|---|---|
| 애플리케이션 (Nginx) | ✅ 정상 작동 | ✅ 정상 작동 |
로컬 접근 (curl) | ✅ 성공 | ✅ 성공 |
| Ubuntu 방화벽 (UFW) | ❌ 포트 80 차단 | ✅ 포트 80 허용 |
| VMware NAT 서비스 (호스트) | ❌ 손상 | ✅ 재시작 |
| 브라우저 접근 | ❌ 타임아웃 | ✅ 성공 |
사용한 트러블슈팅 명령
Ubuntu VM에서
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
curl http://localhost
hostname -I
sudo ufw status
sudo ufw allow 80/tcp
sudo ufw reload
Windows에서
ssh alok@
ping
Windows UI: services.msc → VMware NAT Service와 VMware DHCP Service 재시작.
이번 경험을 통해 배운 점 (실전 스킬)
- Linux에서 웹 서버가 어떻게 동작하는지
- 포트와 방화벽이 접근성에 미치는 영향
- VM 네트워킹(NAT)의 작동 원리
- 문제를 레이어별로 격리하는 방법: 앱 → 방화벽 → 네트워크 → 호스트 서비스
이 체계적인 접근법은 다음 상황에 적용할 수 있습니다:
- 로드되지 않는 EC2 인스턴스
- 접근이 안 되는 Docker 컨테이너
- 프로덕션 환경에서 서비스 타임아웃 발생 상황