http 접속 시에 https로 강제 리다이렉트 시키는 방법 - Apache/CentOS
개요
웹사이트 SSL 인증서를 설치하고 https 접속을 유도할 때 http로 접속하면 https로 강제로 리다이렉트 시키는 방법을 사용하는 경우가 많습니다. 웹페이지 소스에서 http 접속 여부를 판단해서 redirect 시키는 방법 등 여러가지 있을 수 있는데 여기서는 Apache 설정으로 쉽게 할 수 있는 방법을 소개합니다.
SSL 인증서가 설치되어 있다는 가정하에 우선 Linux CentOS에서 설정하는 방법을 확인해보겠습니다.
CentOS 지원 종료: 2024년 06월 30일 기준으로 CentOS 7에 대한 지원이 종료됩니다.
이후에는 보안, 기능 업데이트가 없으므로 가능하면 [Rocky Linux], [Ubuntu]를 사용하는 것이 좋습니다.
⁃ CentOS EOL(End Of Life) 일정 안내
⁃ Ncloud(네이버 클라우드) CentOS 7 서버이미지 판매종료 안내
테스트 환경
테스트에 사용한 서버 환경은 다음과 같습니다.
⁃ 웹서버: Apache 2.4
Apache conf 파일 수정
/etc/httpd/conf/httpd.conf 또는 별도로 설정한 /etc/httpd/conf.d/사이트도메인.conf 등의 Vritual host에 다음 코드를 추가하고 Apache를 재시작하면 됩니다.
방법1 : Redirect 옵션
첫번째 방법은 [Redirect] 옵션을 이용하는 방법입니다.
HTTP 환경 설정에서 [ServerName]을 제외한 다른 항목들은 모두 삭제하거나 주석처리한 후에 리다이렉트 설정을 추가합니다.
<VirtualHost *:80>
ServerName 사이트_도메인
Redirect permanent / https://사이트_도메인/
</VirtualHost>
301
리다이렉트: Redirectpermanent
/ https://사이트_도메인/302
리다이렉트: Redirect / https://사이트_도메인/301
리다이렉트: Redirect301
/ https://사이트_도메인/302
리다이렉트: Redirect302
/ https://사이트_도메인/307
리다이렉트: Redirect307
/ https://사이트_도메인/308
리다이렉트: Redirect308
/ 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>
위 설정 중에서 [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
이렇게 재시작하고 http로 접속을 해보면 https로 전환되는 것을 확인할 수 있습니다.
SSL 모듈 설치
혹시 Apache에 mod_ssl 가 설치되어 있지 않다면 설치하셔야 합니다.
yum -y install mod_ssl
========================================================================
Package Arch Version Repository Size
========================================================================
Installing:
mod_ssl x86_64 1:2.4.6-97.el7.centos updates 114 k
Transaction Summary
========================================================================
Install 1 Package
Total download size: 114 k
Installed size: 224 k
Downloading packages:
mod_ssl-2.4.6-97.el7.centos.x86_64.rpm | 114 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 1:mod_ssl-2.4.6-97.el7.centos.x86_64 1/1
Verifying : 1:mod_ssl-2.4.6-97.el7.centos.x86_64 1/1
Installed:
mod_ssl.x86_64 1:2.4.6-97.el7.centos
Complete!
참고 URL
-
http 접속 시에 https로 강제 리다이렉트 시키는 방법 - Apache/Rocky Linux
https://docs.3rdeyesys.com/docs/compute/redirect-http-to-https/apache-rocky-linux/ -
http 접속 시에 https로 강제 리다이렉트 시키는 방법 - Apache/Ubuntu
https://docs.3rdeyesys.com/docs/compute/redirect-http-to-https/apache-ubuntu/
문서 업데이트 내역
날짜 | 내용 |
---|---|
2023-07-12 | 문서 최초 생성 |
2024-06-19 | CentOS 지원 종료 안내 |