AWS에 서버 구축(HTTPS, 고유 도메인, Apache)

목적은 자체 도메인의 https 서버를 aws에 설정하는 것입니다.


  • 도메인 이름만 예를 들어 Chrome의 주소에 찍어 보안 경고 없이 빨리 표시되는 웹 서버를 만듭니다.



  • Route 53에서 도메인 검색


  • 대시보드에서 도메인 이름을 구입합니다.

  • Certificate Manager에서 인증서 얻기


  • 증명서의 요구로부터, 지정하는 도메인명은, *.domain.example 뿐만이 아니고, 별명으로서 domain.example도 추가해 둔다.
  • 메일 인증 등으로 approval한다.

  • EC2에서 인스턴스 및 로드 밸런서 생성



    인스턴스


  • Amazon Linux AMI를 선택하고 적절한 유형을 선택하여 생성합니다.
  • Elastic IP에서 정적 IP를 검색하고 인스턴스에 연결합니다.
  • 공용 DNS는 ssh로 들어갈 때 사용하므로 복사합니다.
  • 보안 그룹의 인바운드 규칙에서 HTTP 권한을 추가합니다.

  • 로드 밸런서


  • 로드 밸런서를 Classic Load Balancer에서 만들고 대상 인스턴스를 만든 인스턴스로 지정합니다.
  • 리스너의 https에는 작성이 끝난 증명서를 지정해 전송처는 80포트, http도 80에 전송 해 둔다.
  • 보안 그룹의 인바운드는 HTTP, HTTPS를 허용한다.
  • 헬스 체크는, 80번 포트의 index.php로서 둔다.
  • 로드 밸런서의 DNS 이름을 복사합니다.

  • Route 53으로 돌아가서 도메인에 별칭 설정


  • 도메인의 레코드 세트를 만들 때 이름이 비어 있고 유형이 A(IPv4), 별칭이 높음, 별칭 대상이 로드 밸런서의 DNS 이름이 됩니다.

  • Apache, PHP, MySQL 설치



  • Amazon Linux에서 서버 생성 (Apache2.4 + PHP7.2 + MySQL5.7) 를 참고로 했습니다.
  • /var/www/html/index.php를 적당히 만들어 둔다.

  • HTTP를 HTTPS로 리디렉션


  • /etc/httpd/conf/httpd.conf의 끝에 다음을 추가한다.

  • /etc/httpd/conf/httpd.conf
    <VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} =http
    RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
    </VirtualHost>
    
  • 로드 밸런서로부터 HTTP로 온 것을 X-Forwarded-Proto로 판정하고 https에 보내도록 클라이언트에 의뢰한다.
  • 로드 밸런서 자체는 아무것도 하지 않는다.

  • 도메인 이름만 브라우저의 주소란에 입력하고 연결하면 OK!



    기타


  • 로드 밸런서를 Classic Load Balancer가 아니라 Applicatin Load Balancer로 하면 http에서 https로의 전송 설정을 할 수 있는 것 같다.
  • 인증서는 로드 밸런서가 아닌 CloudFront와 연관될 수도 있습니다. 인스턴스에 직접은, 할 수 없는 것 같다.
  • 좋은 웹페이지 즐겨찾기