AWS 서버 구축(2) - Domain, HTTPS, 서브 도메인, Redirection

Daniel_Yang·2022년 6월 6일
0

6. Domain 적용

  • 도메인: 각각의 장치의 주소를 식별하는 IP 주소가 기억하기 어렵기에 DNS 서버를 통해 도메인 주소를 IP주소로 해석하여 처리된다.

  • 가비아에서 검색 후, 적절한 것을 구매. 1년 단위로 구매하게 된다.

  • **DNS → AWS를 위한 설정**

    • DNS 설정으로 들어가면 DNS 정보가 나온다. 오른쪽에 설정을 클릭한다.

    • 여기에 내가 만든 AWS 인스턴스 IP 주소를 입력한다. 도메인 → 내 서버로 해석되게끔.
      - 왼쪽 하단에 있는 레코드를 추가하고 타입은 A, 호스트는 www, 값/위치에 IP 주소
      - 레코드를 하나 더 추가해서 타입은 A, 호스트는 @으로 적는다. @는 www를 적지 않아도 DNS로 접속할 수 있게 한다.
      - TTL은 Time To Live의 약자로 연결시간이 일정시간 지나면 자동으로 끊기게 하는 것

  • 성공한 모습

**에러**

  • 해결: 시간이 해결해주었다… 7분 기다리니 되었다. 바로 적용되는 것이 아니라고 생각하면 된다.

7. HTTPS 적용

  • Web을 통해 TLS를 이용하여 보안 설정된 데이터를 이동할 때, **암호화/데이터 무결성/인증**의 보호 계층을 제공해주는 기능을 한다.
  • 보안적으로 당연히 적용해야한다. 그 외에도 검색 순위 및 색인 생성 과정에서 우선적으로 사용
  • certbot을 통해 무료로 CA 발급하였다. (Let's Encrypt)

**적용 과정**

# snap이 최신 버전인지 확인하고 아니면 업데이트
$ sudo snap install core;
$ sudo snap refresh core;
# certbot 패키지 설치
$ sudo snap install --classic certbot

// 심볼릭 링크를 이용해 certbot 명령어를 사용할 수 있게 만든다.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

// certbot을 통해 인증서를 발급받는다. 성공적으로 발급 완료가 나와야 한다.
$ sudo certbot certonly --nginx

// default가 아니라도 사용중인 config 파일로 편집
$ sudo vim /etc/nginx/sites-available/default

// listen과 server 명을 작성하고  ssl_certificate 인증서 위치도 추가한다.

// 작성 후 nginx 재시작
$ sudo service nginx restart
  • 도메인에 인증서를 등록하려고 했을 때,

    sudo certbot --nginx -d 도메인 -d 도메인 등등으로 이어나간다.
    • 추가로 conf 파일에 서버명으로 등록한 도메인 다 작성해준다.
  • 질문들에 Yes를 하고, 등록할 도메인들을 적어주면 된다.

  • 인증서 등록이 완료되면 아래와 같은 메시지가 나온다!

    • 아래 과정에서 인증서와 key의 위치를 잘 기억해둘 것!
      • 혹시 모르니 복사해두는 것도 필요하다.

  • 잘 적용되었다!


에러

  • 인증서 발급할 때, 없는 서브도메인을 넣었더니 발생했다..

  • conf 파일에서 에러 발생

    • listen 포트번호 옆에 ; 를 붙여주지않아서 발생

    • nginx.service failed with result 'exit-code’ 에러

      • 나의 경우, already in use 문제였다. sudo fuser -k [포트번호]/tcp 로 없애고 재시작
  • conf 파일에서 에러 발생

- ssl 인증서 위치
- `listen 443 default_server; # Note the lack of `ssl`` 으로 해결 [링크](https://serverfault.com/questions/844161/ssl-ngnix-no-ssl-certificate-is-defined-in-server-listening-on-ssl-port-whi)
  • http에서 https 로 리다이렉트 되지않는 상황 참조링크
    • 80 → 443 으로 강제 전환되도록 호스트 설정에서 server 블록을 80 과 443으로 나눠줍니다.

도메인 www 주의

https://joonius.tistory.com/19

8. 서브 도메인 추가

  • 서브 도메인: 도메인 네임 시스템(DNS) 계층에서 서브도메인 또는 하위 도메인은 다른 (주) 도메인의 일부인 도메인이다.
  • URL로 전송하거나 계정 내의 IP 주소나 디렉토리로 포워딩되는 도메인 이름의 확장자이다.
  • dev(개발 환경)와 prod(제품)
    • dev와 prod 해도 되곘지만, test와 product가 좀 더 적절해보인다.
  • 가비아에서 도메인 추가했던 것처럼 진행
    • 다만, 이때는 CNAME 타입으로 진행한다.
    • A vs CNAME 참고
      • A레코드란? □ 해당 개인 도메인 네임서버에 **아이피**를 등록하여 연결하는 레코드
      • CNAME 레코드란? □ 해당 개인 도메인 네임서버에 **URL주소**를 등록하여 연결하는 레코드
  • 서브 도메인용 폴더 만들기
    $ sudo mkdir /var/www/html/dev
    $ sudo mkdir /var/www/html/prod
    $ sudo vim /var/www/html/dev/dev.html
    $ sudo vim /var/www/html/prod/prod.html
    • nginx의 서브 도메인 연결을 설정
      # default 혹은 다른 config 파일
      $ sudo vim /etc/nginx/sites-available/default
      
      ######### default 파일 내 #########
      # dev 서브 도메인 서버 추가 (prod 서버도 같이 진행!)
      server {
         listen 443 ssl;
         server_name dev.도메인명;
         root /var/www/html/dev;
         
         index dev.html;
         
         location / {
            try_files $uri $uri/ =404;
         } 
      }
      
      ///// default 저장 후 종료
      $ sudo vim service nginx restart


9. 리다이렉션

  • 리다이렉션: 서버에서 클라이언트를 특정 서버(페이지)로 보내는 것을 리다이렉션

  • 구글링 검색어: ip to domain redirect ngnix

  • /sites-available/default 파일에서 서버 블록을 작성해준다.

    $ sudo vim /etc/nginx/sites-available/default
    
    ######### default 파일 내 #########
    # HTTP Redirection
    server {
       listen 80;
       server_name @@@ www.@@@;
       root /var/www/html
        
       index index.html index.htm index.php;
       
       location / {
          return 301 https://www.@@@$request_uri;
       }
    }
    ######### default 저장 후 종료 #########
    $ sudo vim service nginx restart

    server_name에는 나의 ip를 넣어주고 scheme://[이동하고자하는도메인]scheme://[이동하고자 하는 도메인]request_uri; 으로 return 시켜준다.

0개의 댓글