Oracle Cloud Free Tier로 서버를 만들었다면 가장 먼저 해볼 만한 실습은 웹서버 운영입니다. Nginx를 설치하고, 간단한 HTML 페이지를 띄운 뒤, 도메인과 HTTPS까지 연결하면 개인 홈페이지나 랜딩 페이지를 무료에 가깝게 운영할 수 있습니다.
이 글에서는 OCI Free Tier 인스턴스에 Nginx 웹서버를 설치하고 외부에서 접속 가능하게 만드는 과정을 정리합니다. 단순 설치 명령어만 나열하기보다, OCI에서 자주 막히는 네트워크 보안 설정까지 함께 다룹니다.
핵심 판단
- Nginx 설치 자체는 쉽지만, OCI 보안 목록 또는 NSG 설정을 놓치면 외부 접속이 되지 않습니다.
- HTTP는 80번, HTTPS는 443번 포트를 OS 방화벽과 OCI 네트워크 양쪽에서 확인해야 합니다.
- 도메인과 HTTPS까지 연결해야 “진짜 운영 가능한 웹서버”에 가까워집니다.
준비물
- Oracle Cloud Free Tier 계정
- 생성된 Ubuntu Compute 인스턴스
- SSH 접속 가능한 개인키
- 선택 사항: 개인 도메인
아직 인스턴스를 만들지 않았다면 먼저 Always Free 대상 Shape인지 확인해야 합니다. Ampere A1을 사용할 경우 Arm64 환경이므로, 이후 Docker까지 고려한다면 Arm64 이미지 지원 여부도 함께 보는 편이 좋습니다.
1. 서버 접속하기
먼저 SSH로 서버에 접속합니다.
ssh ubuntu@서버_IP
접속 후 패키지 목록을 업데이트합니다.
sudo apt update
sudo apt upgrade -y
운영 서버라면 업데이트 후 재부팅이 필요한지 확인하는 습관도 좋습니다.
test -f /var/run/reboot-required && cat /var/run/reboot-required
2. Nginx 설치하기
Ubuntu에서는 다음 명령어로 Nginx를 설치할 수 있습니다.
sudo apt install nginx -y
설치 후 서비스 상태를 확인합니다.
sudo systemctl status nginx
active (running) 상태가 보이면 서버 내부에서는 Nginx가 정상 실행 중입니다. 하지만 이 단계만으로 외부 접속이 되는 것은 아닙니다.
3. OS 방화벽 확인하기
Ubuntu에서 UFW를 사용하는 경우 HTTP, HTTPS, SSH를 허용합니다.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
주의할 점은 sudo ufw enable을 실행하기 전에 반드시 SSH 허용 규칙을 먼저 넣어야 한다는 것입니다. 그렇지 않으면 현재 SSH 세션은 유지되더라도 이후 접속이 막힐 수 있습니다.
4. OCI 보안 목록 또는 NSG 열기
OCI에서는 OS 내부 방화벽과 별개로 클라우드 네트워크 보안 규칙이 있습니다. 인스턴스가 속한 VCN의 Security List 또는 Network Security Group에서 인바운드 규칙을 추가해야 합니다.
| 포트 | 프로토콜 | 용도 | 소스 예시 |
|---|---|---|---|
| 22 | TCP | SSH | 가능하면 본인 IP만 |
| 80 | TCP | HTTP | 0.0.0.0/0 |
| 443 | TCP | HTTPS | 0.0.0.0/0 |
웹서버는 누구나 접속해야 하므로 80/443은 일반적으로 0.0.0.0/0으로 열 수 있습니다. 반면 SSH 22번 포트는 가능하다면 본인 IP로 제한하는 것이 안전합니다.
5. 브라우저에서 확인하기
이제 브라우저에서 서버 공인 IP로 접속합니다.
http://서버_IP
Nginx 기본 페이지가 보이면 성공입니다. 접속이 안 된다면 다음 순서로 확인합니다.
- Nginx 서비스가 실행 중인지 확인
- Ubuntu 방화벽에서 80번 포트가 열려 있는지 확인
- OCI Security List 또는 NSG에 80번 포트 인바운드 규칙이 있는지 확인
- 인스턴스에 공인 IP가 연결되어 있는지 확인
6. 간단한 HTML 페이지 올리기
Nginx 기본 웹 루트는 보통 다음 경로입니다.
/var/www/html
기본 페이지를 간단히 바꿔봅니다.
sudo tee /var/www/html/index.html > /dev/null <<'HTML'
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>My OCI Web Server</title>
</head>
<body>
<h1>Hello, Oracle Cloud!</h1>
<p>This page is running on OCI Free Tier.</p>
</body>
</html>
HTML
브라우저를 새로고침했을 때 문구가 바뀌면 정적 웹페이지 배포까지 성공한 것입니다.
7. 도메인 연결하기
도메인이 있다면 DNS에서 A 레코드를 추가합니다.
| 타입 | 이름 | 값 |
|---|---|---|
| A | @ | 서버 공인 IP |
| A | www | 서버 공인 IP |
DNS 반영에는 몇 분에서 몇 시간이 걸릴 수 있습니다. 반영 여부는 다음 명령어로 확인할 수 있습니다.
dig example.com +short
8. HTTPS 적용하기
도메인 연결이 끝났다면 Let’s Encrypt 인증서를 사용할 수 있습니다.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx
안내에 따라 도메인을 선택하면 Nginx 설정에 HTTPS가 자동으로 추가됩니다. 인증서 자동 갱신은 보통 systemd timer로 등록되지만, 다음 명령어로 테스트해볼 수 있습니다.
sudo certbot renew --dry-run
운영 전 보안 체크리스트
- SSH 키 로그인 사용
- root SSH 로그인 차단
- SSH 22번 포트 접근 IP 제한
- 정기 업데이트 적용
- 불필요한 포트 닫기
- Nginx access/error 로그 확인
- Always Free 한도와 유휴 인스턴스 조건 확인
- 백업이 필요한 데이터는 별도 볼륨 또는 외부 저장소에 보관
다음 단계
정적 HTML 페이지가 정상적으로 뜬다면 다음으로 확장할 수 있습니다.
- Nginx reverse proxy로 Node.js, FastAPI, Spring Boot 연결
- Docker Compose로 여러 개인 서비스 운영
- Cloudflare DNS와 프록시 연결
- Uptime 모니터링과 로그 알림 구성
- GitHub Actions 또는 간단한 rsync 배포 자동화
마무리
OCI Free Tier와 Nginx를 조합하면 비용 부담 없이 개인 웹서버를 운영할 수 있습니다. 중요한 것은 Nginx 설치보다 네트워크 경로 전체를 이해하는 것입니다. 브라우저에서 접속하려면 Nginx, OS 방화벽, OCI 보안 규칙, 공인 IP, DNS가 모두 맞아야 합니다.
이 흐름을 한 번 익혀두면 이후 API 서버, 블로그, 봇 대시보드, 개인 자동화 페이지까지 같은 구조로 확장할 수 있습니다.