내 도메인으로 웹사이트 만들기 (Nginx·무료 HTTPS)
Ubuntu 서버에 웹서버(Nginx)를 설치하고, 내 도메인을 연결한 뒤, 무료 인증서로 HTTPS(자물쇠)까지 적용하는 방법입니다.
1. Nginx 설치
sudo apt update
sudo apt install -y nginx
방화벽(ufw)을 켜두었다면 웹 포트를 엽니다. (방화벽 포트 열기)
sudo ufw allow 'Nginx Full'
브라우저에서 http://서버IP로 접속해 "Welcome to nginx!" 화면이 나오면 성공입니다.
2. 도메인 연결하기
도메인을 산 곳(가비아, 호스팅케이알, Cloudflare 등)의 DNS 관리 메뉴에서 레코드를 추가합니다.
| 타입 | 호스트(이름) | 값 |
|---|---|---|
| A | @ | 서버 IP |
| A | www | 서버 IP |
DNS 반영에는 보통 몇 분, 길게는 몇 시간이 걸립니다. 내 PC에서 아래 명령어로 서버 IP가 나오면 연결된 것입니다.
nslookup example.com
3. 내 사이트 설정하기
웹 파일을 둘 폴더를 만들고 Nginx 설정 파일을 작성합니다. (example.com은 내 도메인으로 바꿉니다)
sudo mkdir -p /var/www/example.com
echo '<h1>Hello Nevv!</h1>' | sudo tee /var/www/example.com/index.html
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
}
설정을 켜고 Nginx를 다시 불러옵니다.
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t # 설정 문법 검사 — "ok"가 나와야 합니다
sudo systemctl reload nginx
Node.js·Python 앱을 연결하고 싶다면
앱이 서버 안에서 예를 들어 3000번 포트로 실행 중이라면, 위 설정의 root, index 줄 대신 아래를 넣습니다.
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
4. HTTPS 적용 (무료 인증서)
Let's Encrypt 인증서를 자동으로 발급·설치해주는 certbot을 사용합니다. 2단계 도메인 연결이 끝난 뒤 진행하세요.
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
이메일 입력과 약관 동의 후 자동으로 설정됩니다. 인증서는 90일마다 자동 갱신되며, 아래 명령어로 갱신이 잘 되는지 미리 확인할 수 있습니다.
sudo certbot renew --dry-run
잘 안 될 때
- 사이트가 안 열려요 —
sudo systemctl status nginx로 Nginx가 실행 중인지, 방화벽에서 80/443이 열려 있는지 확인하세요. - certbot이 실패해요 — 도메인이 아직 서버 IP로 연결되지 않은 경우가 대부분입니다.
nslookup으로 먼저 확인하세요. - 502 Bad Gateway —
proxy_pass로 연결한 앱이 꺼져 있습니다. 앱을 먼저 실행해주세요.