지난 회에서는 AWS의 Elastic IP(이하 EIP)를 통해 고정 IP 주소를 획득하는 방법을 알아 보았습니다.


그러나 실제로 숫자로 이루어진 IP 주소로 접속하는 사람은 거의 없을 것입니다.


대부분은 사람이 기억하기 쉽고, 또한 IP 주소가 바뀌더라도 매핑만 바꾸어 주어 접속할 수 있도록 도메인 이름을 사용할 것입니다.


이번 포스팅에서는 EC2 인스턴스에 본인 소유의 도메인을 연결해 봅니다.


미리 여기에 사용할 자신의 도메인은 가지고 있어야 한다는 점을 미리 알려 드립니다.




[8] EC2 인스턴스에 도메인 연결 (Route53)



AWS에서 도메인을 연결하기 위해 사용하는 도메인 설정 서비스는 Route 53 이라고 부릅니다. Route 53은 일반적인 도메인 설정에 더해서 편리한 기능들을 제공합니다.


일반적으로 웹서비스를 받을때 도메인 설정은 무료로 제공되지만, Route 53의 경우는 저렴하지만 유료 서비스라는 점을 기억해야 합니다. (조건에 따라 면제되기도 하는 것 같습니다.)


하지만, 여러가지 이유로 도메인 설정 서비스는 본인 서버를 제공하는 곳의 서비스를 받는게 유리합니다. 더군다나 AWS의 장점중 하나인 로드 밸런싱 서비스를 받기 위해서는 Route 53을 이용할 수 밖에 없는것 같습니다.


그럼 시작해 보겠습니다.


먼저 AWS 관리자 콘솔로 접속합니다.


'Route 53' 을 클릭합니다.

[Create Hosted Zone] 을 클릭합니다.

우측 호스트 존을 생성하는 부분에서 Domain Name에 본인 소유의 도메인(예를들어 example.com과 같은 형태)을 입력하고 [Create]를 클릭합니다.


Route 53이 도메인 이름을 근거로 호스트 존을 생성합니다.


호스트 존을 선택하고, [Go to Record Sets] 을 클릭합니다.

레코드 중에 NS 레코드가 보입니다. Value에 네임서버 리스트가 나와 있습니다. 클릭하면 우측에 Edit Recoed Set 영역에도 Value: 항목에 네임서버 리스트가 나타납니다.


이제 본인의 도메인을 등록한 서비스에 접속하여 네임서버를 위에 나열된 네임서버로 바꾸어 줍니다.


아래는 예를 들어 제가 사용하는 도메인 서비스 업체의 도메인 관리에서 네임서버를 바꾸는 과정을 예시로 보여줍니다. (따라서 본인이 사용하는 도메인 서비스 업체에 따라 다르게 나타납니다. 본인이 도메인 등록한 웹사이트에서 적절히 적용해 봅시다.)

<출처 : http://hosting.kr>

<출처 : http://hosting.kr>

<출처 : http://hosting.kr>

위와 같이 네임서버를 변경하였습니다.


다시 AWS의 Route 53 서비스로 돌아가서 A레코드를 설정하겠습니다.


다시 Route 53 입니다. 해당 호스트 존에서 Recoed를 추가 하겠습니다. [Create Record Set] 버튼을 클릭하고, 오른쪽 Create Record Set 영역을 채웁니다.

  • Name : 서브 도메인 네임을 입력합니다. 이번 예제에서는 루트 도메인을 사용하기 위해 비워 두겠습니다. 비우면 example.com 과 같은 형태로 접속하게 됩니다.
  • Type : A레코드를 생성하기 위해 'A - IPv5 address' 를 선택합니다.
  • Alias : 'No' 를 선택합니다.
  • TTL : 도메인 이름 캐싱 시간을 정합니다. 그대로 둡니다.
  • Value : 여기에 Elastic IP (고정IP)을 입력합니다.

[Create]를 클릭합니다.

A레코드가 추가 되었습니다. A레코드를 간단히 설명하면 도메인 이름을 IP 주소로 연결해 주는 것이라고 보면 이해가 쉽습니다.


이제 실제 웹브라우저에서 IP주소가 아닌 연결한 도메인 이름으로 접속해 봅니다. (주의 : 위 설정대로라면, 도메인이 example.com 이라면, example.com 으로 입력해야 합니다. www.example.com 과 같이 도메인 이름 앞에 서브도메인 이름을 입력하면, 아직 도메인 설정을 하지 않아서 접속이 되지 않습니다.)

드디어 도메인으로 연결이 되었습니다. 참고로, 도메인 설정(위에서는 A 레코드 설정)한 것이 반영되는데는 시간이 걸립니다. 바로는 적용이 안되기 때문에 바로 접속되지는 않을 겁니다.


제 경우 짧게는 10여분에서 길게는 20분 이상 걸리더군요.


이제는 서브 도메인을 설정해 보겠습니다.


위 예에서는 도메인이 example.com 이라면, example.com으로만 접속이 되고 www가 앞에 붙으면 접속이 되지 않습니다.


이번에는 www를 앞에 붙였을때 접속이 되도록 하겠는데, NGINX를 통해 example.com과는 다른 웹페이지를 보여지도록 해 보겠습니다. (아파치 웹서버의 가상호스트 기능과 같다고 보면 됩니다.)


먼저, Route 53화면에서 계속해서 레코드를 추가해 봅니다.


이번에는 CNAME 레코드를 추가해 보겠습니다. (A레코드를 입력해도 됩니다만 이번에는 CNAME을 사용하는 방법을 살펴봅니다.)


역시 이번에도 [Create Recoed Sets]를 클릭합니다.


  • Name : 이번에는 서브도메인명으로 'www'를 입력합니다.
  • Type : 'CNAME - Canonical name'을 선택합니다.
  • Value : 이번에는 IP가 아니라 A레코드에 사용한 루트 도메인 이름을 입력합니다. (예: example.com)
[Create]를 클릭합니다.

CNAME은 쉽게 이해하자면 도메인이름을 도메인이름으로 연결하는 것이라고 생각하면 되겠습니다. 예를 들어 www.example.com 을 example.com 으로 연결해주는것이죠.

이제 도메인 설정은 되었고, 실제 서버에서 작업을 해줘야겠죠?

먼저, '/var/www/www' 디렉터리를 만듭니다.

$ cd /
$ cd var
/var$ sudo mkdir www
/var$ cd www
/var/www$ sudo mkdir www
/var/www$ cd www
/var/www/www$

'/var/www/www' 디렉터리에 index.html 파일을 만듭니다. 내용은 아래와 같이 간단히 입력합니다.

준비 되었으면, 이제 NGINX를 설정합니다.


먼저 만일을 대비해 '/etc/nginx/'디렉터리의 nginx.conf 파일을 원본을 복사하여 사본을 만들어 둡니다.


 /etc/nginx$ sudo cp nginx.conf nginx.conf.ori


아파치 웹서버와 비슷한 방식으로 관리하기 위해 '/etc/nginx/' 하위 디렉터리로 'sites-enabled'디렉터리와 'sites-available' 디렉터리를 만듭니다.


 /etc/nginx$ sudo mkdir sites-enabled

 /etc/nginx$ sudo mkdir sites-available


이제 'nginx.conf' 파일을 열어 아래의 내용을 http 블럭 맨 아래 추가합니다.


include /etc/nginx/sites-enabled/*.conf;

이렇게 하면 조금 전에 만든 'sites-enabled' 디렉터리의 모든 .conf 파일들을 NGINX가 시작될 때 읽어들여 설정에 반영하게 됩니다.


이제 조금 전에 만든 'sites-available' 디렉터리에 'www' 서브 도메인을 연결할 서버 설정 파일을 만듭니다.


여기서는 example.conf 라는 파일로 만들었다고 가정합니다.


server {


    listen       80;

    server_name  www.example.com;


    #charset utf-8;


    #access_log  /var/log/nginx/log/www.example.access.log;


    location / {

        root   /var/www/www;

        index  index.html index.htm;

    }



    # redirect server error pages to the static page /50x.html

    #

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   /usr/share/nginx/html;

    }

}

새로 만든 'example.conf' 파일을 'sites-enabled' 디렉터리에 심볼릭 링크를 만들어줍니다.


$ cd /etc/nginx/sites-enabled

/etc/nginx/sites-enabled$ sudo ln -s /etc/nginx/sites-avaliable/example.conf example.conf

이제 위 화면과 같이 NGINX의 설정을 재로딩 합니다.


$ sudo service nginx reload


이제 서브도메인을 포함한 도메인으로 웹브라우저로 접속해 봅니다.


예를 들어 'example.com'이 도메인이면, 주소창에 'www.example.com' 을 입력합니다.

새로 분기한 '/var/www/www/index.html' 파일이 잘 나오는걸 확인할 수 있습니다.


이번 포스팅은 여기까지 입니다.


다음 포스팅에서는 많이들 사용하는 node.js 앞에 NGINX가 프록시 역할을 하도록 설정해 보도록 하겠습니다.




(1) 이 포스팅은 2014.7.29 기준으로 작성되었습니다. 웹서비스는 서비스 제공 업체에 의해 언제든지 변경될 수 있습니다.

(2) 여기서 사용한 스크린 캡쳐 이미지들의 출처는 따로 표기되지 않으면, http://aws.amazon.com 웹사이트 입니다.

(3) 터미널 화면의 캡쳐 이미지와 웹 브라우저 접속의 예제는 글쓴이의 PC 화면 입니다.


신고
Posted by 날개

댓글을 달아 주세요

  1. Aterilio 2015.06.02 20:11 신고 Address Modify/Delete Reply

    글이 너무 길어도 차단되었다고 뜨나봐요...
    문의 글 남기려고 했더니...

    저는 route53의 네임서버는 사용하지 못하고 호스팅 업체의 네임서버를 사용중입니다. route53에서 도메인 접속자를 땡겨오지 않고 호스팅에서 도메인을 통해 들어오는...(무슨 말인지 아시려나 ㅠㅠ) 뭐 암튼 그런 구조인데요..

    cname / .conf 세팅해주었는데 www 페이지가 별도로 뜨지 않고 welcome to nginx 페이지가 뜹니다. 어떤 부분이 문제일까요?

  2. 날개 2015.06.02 22:35 신고 Address Modify/Delete Reply

    글쎄요. 저는 도메인을 호스팅해주는 서버쪽에 NS 설정하는 방법밖에 알지 못해서요..(아마존이든 다른 곳이든...)
    (아무래도 Route53을 사용하지 않으면 이런저런 제약 사항이 있긴 합니다만, 그냥 2차 도메인 정도는 상관 없을것 같습니다만..)

    www 페이지가 별도로 뜨지 않고 welcome to nginx로 가는걸로 봐서는 도메인 세팅한 것이 그냥 도메인.com(호스트네임없이)으로 알리아싱 되거나 하는것 같은데, 정확한 상황을 알지 못해서 (그리고 쓰던것만 써서 아는게 한정적이라..) 정확한 답변은 못드리겠네요. ^^;
    혹시 CNAME설정을 완전히 다 빼버리고, www붙였을때 접속이 되는지 확인해 보시는건 어떨지요? (CNAME이나 다른 설정 없으면 접속되지 않아야 정상이거든요)

    (PS. 티스토리 덧글 시스템이 긴 글은 못올리게 되어 있나 보군요?)

    • Aterilio 2015.06.03 10:58 신고 Address Modify/Delete

      cname 제거해서 시도해보았으나
      그러면 접속이 되지 않습니다(그게 정상이죠)
      cname이 있는 상태에서는 www.도메인이면 분기되어야 하는데 그냥 바로 접속 되는 현상 같습니다...ㅠ
      네이버 웍스때문에 route 53 사용하기가 어려운 상태구요ㅠ

      덧) 네 글이 길면, "차단된 사용자입니다" 라고 뜹니다 ㅠ
      덧2) cname 적용후, 파폭에서는 welcome to nginx가 뜨고, IE에서는 페이지를 찾을 수 없다가 뜨네요... 이게 무슨 문제일까요?

  3. 날개 2015.06.03 14:48 신고 Address Modify/Delete Reply

    브라우저마다 다르게 나오는거는 브라우저 캐시 문제 때문일 수 있습니다. (예전 결과 가지고 있다가 갱신이 안되는...)

    • Aterilio 2015.06.04 20:57 신고 Address Modify/Delete

      해결법을 찾았습니다!
      aws(정확히는 route53) 자체에서 mx를 사용할 수 있네요!
      전 이게 안되는 줄 알고 가비아 네임 서버 가지고 지지고 볶고 해보려고 별 생쇼를 ㅠㅠ naver works 때문에요 ㅠㅠ
      route53에서 mx 등록해서도 naver works를 사용할 수 있다니 신세계입니다 ㅋㅋㅋ 이제 다시 서브 도메인 테스트 하러...
      이건 아직 해결볍을 못찾았...
      테스트 후 다시 댓글 남기겠습니다!
      덧) 혹시 spf 에 대해서 아시는지요?
      aws mx 등록 검색하다가 알게 된건데... 어떻게 써먹는지를 모르겠네요 @ㅁ@ 메일 송수신시의 보안에 대한 얘기 같은데 ㅠㅠ
      덧2) 됩니다! 되요! www page가 드디어 출력됐습니다!!!

  4. 날개 2015.06.05 00:06 신고 Address Modify/Delete Reply

    축하드려요 ^^

  5. Wheelsy 2015.06.08 23:11 신고 Address Modify/Delete Reply

    한참 동안 헤매다가 이 블로그 글 한 방으로 해결하였네요. 정말 감사합니다.
    처음부터 찬찬히 공부해가면 좋겠지만, 급작스럽게 맡은 실무로 그럴 마음의 여유가 없어, 배우는 가운데 이것 저것 해보다 보니 오히려 찬찬히 배우는 것보다 시간이 더 들기도 합니다 ㅜㅜ

  6. attanani 2015.11.19 17:48 신고 Address Modify/Delete Reply

    아니 이렇게 정리가 잘된...ㅠ 잘보고 갑니다^^ 감사합니다~~

  7. 서대원 2016.02.22 16:49 신고 Address Modify/Delete Reply

    도메인 네임서버를 입력하실때 옆에 작성하신 네임서버 IP는 aws plastic IP를 적어주신건가요?

    • 날개 2016.03.02 01:13 신고 Address Modify/Delete

      아니요. 네임서버 IP는 말 그대로 네임서버라는 서버의 IP를 적는 것입니다.
      위의 경우에는 제가 사용한 도메인 관리 사이트의 네임서버 주소 변경에서, 네임서버를 입력하고 [IP Check] 버튼을 누르면 자동으로 네임서버 IP 가 입력 되었던 것으로 기억합니다.

  8. 라한 2016.05.29 21:00 신고 Address Modify/Delete Reply

    오 감사합니다 route53 을 몰라서 해매고 있었는데 bb

  9. scenerise 2016.06.16 17:16 신고 Address Modify/Delete Reply

    안녕하세요 정말 도움이 많이 되었는데 ㅠ centos 에서 위의 내용과 동일한 방식으로 진행을 했어요 물론, centos 문법이나 환경에 맞게요 문제는 그냥 도메인은 되는거 같은데 www. 이랑 test. 을 추가해서 하려니 이 2개는 인식이 안되네요 ㅠㅠㅠ 답답한 마음에 글 남겨봅니다

  10. 감사합니다 2017.08.03 11:37 신고 Address Modify/Delete Reply

    감사합니다. 간단한 설명에 박수를 치고 갑니다.

    다만 중간부분에 IPv5로 4와 6이아닌 오타가 있는 것 같습니다!

티스토리 툴바