Ncloud Rocky Linux 서버 Apache에서 http 접속 시에 https로 강제 리다이렉트 시키는 방법입니다

개요

Ncloud (네이버 클라우드) Rocky Linux (록키 리눅스) 서버 Apache 웹서버에서 http 접속 시에 https로 강제 리다이렉트 시키는 방법은 크게 2가지가 있는데 각각에 대해 정리해보겠습니다.

테스트 환경

테스트에 사용한 서버 환경은 다음과 같습니다.

⁃ OS: Rocky Linux 8.6
⁃ 웹서버: Apache 2.4
⁃ 테스트 사이트: rocky-https-test.com

방법1 : Redirect 옵션

첫번째 방법은 [Redirect] 옵션을 이용하는 방법입니다.
HTTP 환경 설정에서 [ServerName]을 제외한 다른 항목들은 모두 삭제하거나 주석처리한 후에 리다이렉트 설정을 추가합니다.

<VirtualHost *:80>
    ServerName 사이트_도메인

    Redirect permanent / https://사이트_도메인/    
</VirtualHost>    
Ncloud Rocky Linux 서버 Apache에 HTTPS 접속을 위한 SSL 인증서 설정하는 방법
  • 301 리다이렉트: Redirect permanent / https://사이트_도메인/
  • 302 리다이렉트: Redirect / https://사이트_도메인/
  • 301 리다이렉트: Redirect 301 / https://사이트_도메인/
  • 302 리다이렉트: Redirect 302 / https://사이트_도메인/
  • 307 리다이렉트: Redirect 307 / https://사이트_도메인/
  • 308 리다이렉트: Redirect 308 / https://사이트_도메인/

방법2 : RewirteRule 옵션

두번째 방법은 [RewirteRule] 옵션을 이용하는 방법입니다.
첫번째 방법이 더 간편하기는 하지만, 리다이렉트 시킬 때 HTTP 상태코드 뿐만 아니라 HTTP Header 값 등 다양한 설정이 필요한 경우에는 [RewirteRule]을 이용하는 두번째 방법을 사용해야 합니다.

<VirtualHost *:80>
    ServerName 사이트_도메인

    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost> 
Ncloud Rocky Linux 서버 Apache에 HTTPS 접속을 위한 SSL 인증서 설정하는 방법

위 설정 중에서 [R=301,L] 이 부분에 원하는 상태코드를 입력하면 됩니다.

  • 301 리다이렉트: RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
  • 302 리다이렉트: RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=302,L]
  • 307 리다이렉트: RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=307,L]
  • 308 리다이렉트: RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=308,L]

  • 설정 파일을 저장한 후에 Apache 데몬을 재시작합니다.
~# systemctl restart httpd
Ncloud Rocky Linux 서버 Apache에 HTTPS 접속을 위한 SSL 인증서 설정하는 방법

리다이렉트 여부 확인

웹브라우저에서 [F12] 키로 개발자 모드로 변경한 후에 [http]로 접속을 해보면 아래 스샷처럼 HTTP 301 상태코드를 반환하면서 [https]로 리다이렉트된 것을 확인할 수 있습니다.

Ncloud Rocky Linux 서버 Apache에 HTTPS 접속을 위한 SSL 인증서 설정하는 방법

SSL 모듈 설치

리다이렉트 설정과 관계없이 SSL 인증서를 설정하고 HTTPS 접속을 하려면 [mod_ssl]가 설치되어 있어야 하는데, 혹시나 설치되어 있지 않다면 설치하셔야 합니다.

~# dnf -y install mod_ssl
Ncloud Rocky Linux 서버 Apache에 HTTPS 접속을 위한 SSL 인증서 설정하는 방법

참고 URL

  1. Rocky Linux에서 Apache SSL 인증서 설정하는 방법
  2. Rocky Linux Apache with ‘mod_ssl’ 가이드