웹 서버 구축하기 A to Z (2)

도메인 구입부터 CloudFlare, https까지

개요

이 글은 웹 서버를 구축하기 위한 두번째 글이다.

이 글에서는 도메인 구입부터 CloudFlare를 사용하여 네임서버를 관리하고, https를 적용하는 방법을 다루도록 하겠다.

도메인 구입

자신의 도메인을 구입해야한다. 도메인은 도메인 구입 사이트에서 구입할 수 있다.
도메인 구입 사이트로는 국내에는 가비아, 카페24, 호스팅케이알 등이 있고, 해외에는 namecheap, godaddy 등이 있다.
특히 구글에서도 도메인을 구입할 수 있는데 최근에 개발자들에게 인기가 있는 .dev 도메인을 구입할 수 있다.
각자 원하는 도메인을 구입하면 된다.

네임서버

네임서버는 도메인을 IP주소로 변환해주는 서버이다.
우리는 네임서버를 변경하여 CloudFlare에서 관리하도록 하겠다.
이 네임서버는 도메인 구입 사이트에서 관리할 수도 있지만, CloudFlare에서 관리하는 것이 더 편리해서 많은 사람들이 CloudFlare를 사용한다.

네임서버 변경

도메인 구입 사이트에서 네임서버를 변경하면 된다.
CloudFlare에 가입을 하고 도메인을 등록하면 네임서버를 알려준다.

cloudflare-nameserver

도메인 구입 사이트에 접속해서 자신의 도메인의 설정에 들어가서 네임서버를 변경하면 된다.

CloudFlare

이제 본격적으로 CloudFlare에서 도메인 관리를 해보자.

도메인 - ip 연결하기

자신의 도메인 - DNS - 레코드로 이동한다.

cloudflare-records

레코드를 추가하자.

cloudflare-record
  • Type: A
  • Name: @
  • IPv4 address: 자신의 서버의 IP주소

이제 자신의 도메인으로 접속하면 자신의 서버로 접속할 수 있다.

sldev-helloworld

SSL 인증서

이제 https를 적용해보자.

SSL 인증서 발급

SSL 인증서는 CloudFlare에서 발급받을 수 있다.
하지만 CloudFlare에서 SSL 인증서를 발급받게 되면 CloudFlare의 프록시를 사용해야하기 때문에 서버가 느려질 수 있다.
그래서 우리는 CloudFlare에서 SSL 인증서를 발급받지 않고, Let’s Encrypt에서 발급받아서 사용할 것이다.

Let’s Encrypt

Let’s Encrypt는 무료로 SSL 인증서를 발급받을 수 있는 사이트이다.
certbot을 사용하면 편리하다.
certbot은 Let’s Encrypt에서 SSL 인증서를 발급받을 수 있게 해주는 도구이다.
certbot의 자세한 사용법에 대해서는 추후에 다루도록 하겠다.
이 글에서는 간단하게 certbot을 사용하여 SSL 인증서를 발급받는 방법만 다루도록 하겠다.

certbot

certbot은 다음과 같이 설치할 수 있다.

sudo apt update
sudo apt install certbot

인증서 발급

SSL 인증서를 발급받아 보자
--standalone 옵션으로 certbot을 실행할때는 80번 포트를 사용해야 하기 때문에 nginx를 먼저 종료해야한다.

sudo systemctl stop nginx
sudo certbot certonly --standalone -d 도메인

인증서 경로

인증서는 /etc/letsencrypt/live/도메인에 저장된다.

nginx 설정

이제 nginx 설정을 해보자.

nginx 설정 파일

저번 글에서 nginx 설정 파일을 만들었었다.
그 설정 파일을 수정해서 ssl 프록시를 적용해 보자.

server {
	listen 80;

    server_name 도메인(sldev.kr);

    location / {
    	return 301 https://도메인(sldev.kr)$request_uri;
    }

}

server {
listen 443;

    server_name 도메인(sldev.kr);

    root /var/www/도메인(sldev.kr);
    index index.html;

    ssl_certificate /etc/letsencrypt/live/도메인(sldev.kr)/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/도메인(sldev.kr)/privkey.pem;

    location / {
    	try_files $uri $uri/ =404;
    }

}

nginx 설정 파일 적용

nginx를 재시작하자

sudo systemctl nginx restart

마치며

이제 https를 적용하여 자신의 서버를 외부에 공개할 수 있게 되었다.
이제 자신의 서버를 이용하여 웹 서비스를 만들어보자.