Ncloud에서 http 접속 시에 https로 강제 리다이렉트 시키는 방법 - Apache/Ubuntu입니다

개요

웹사이트 SSL 인증서를 설치하고 https 접속을 유도할 때 http로 접속하면 https로 강제로 리다이렉트 시키는 방법을 사용하는 경우가 많습니다.
웹페이지 소스에서 http 접속 여부를 판단해서 redirect 시키는 방법 등 여러가지 있을 수 있는데 여기서는 Apache 설정으로 쉽게 할 수 있는 방법을 소개합니다.

SSL 인증서가 설치되어 있다는 가정하에 우선 Linux Ubuntu에서 설정하는 방법을 확인해보겠습니다.

테스트 환경

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

⁃ OS: Ubuntu 20.04
⁃ 웹서버: Apache 2.4

SSL 엔진 모듈 활성화

먼저, SSL 엔진 모듈을 활성화 해야 HTTPS 접속을 할 수 있습니다.

~# a2enmod ssl
~# systemctl restart apache2

Apache conf 파일 수정

/etc/apache2/sites-enabled/000-default.conf 파일의 Vritual host에 다음 코드를 추가하고 Apache를 재시작하면 됩니다.

방법1 : Redirect 옵션

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

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

    Redirect permanent / https://사이트_도메인/    
</VirtualHost> 
  • 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]을 이용하는 두번째 방법을 사용해야 합니다.

Rewrite 모듈 설치

우선, RewirteRule 옵션을 사용하려면 Rewrite 모듈을 활성화 해야합니다.

~# a2enmod rewrite
~# systemctl restart apache2
<VirtualHost *:80>
	ServerName 사이트_도메인

	RewriteEngine On
	RewriteCond %{HTTPS} !on
	RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

위 설정 중에서 [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 apache2

이렇게 재시작하고 http로 접속을 해보면 https로 전환되는 것을 확인할 수 있습니다.

참고 URL

  1. http 접속 시에 https로 강제 리다이렉트 시키는 방법 - Apache/Rocky Linux
  2. http 접속 시에 https로 강제 리다이렉트 시키는 방법 - Apache/CentOS
Tags: apache ubuntu