Back-end/Network

아파치 http -> https 리다이렉트 설정하기. Rewrite 엔진.

cheersHena 2021. 1. 13. 11:27
반응형

아파치 HTTP -> HTTPS 리다이렉트 설정하기.

(feat. Rewrite Engine)

 

 

 아파치 웹서버에 SSL 인증서를 적용하면 https로 접속하게 되는데 적용 후에도 사용자들은 http로 접속하기 때문에 리다이렉트 설정을 이용해서 http로 접속했을 시 자동으로 https 로 넘겨주는 설정을 많은 곳에서 하고 있다.

 

여러 방법 중 아파치 Rewrite 엔진을 사용해서 리다이렉트 시켜보자. 

 

1. Rewrite엔진을 사용하기 위해서 http.conf 에서 사용 설정부터 해준다.

 

vi http.conf 

#LoadModule
LoadModule rewrite_module modules/mod_rewrite.so    <-- 주석해제 

# Virtual hosts 설정을 사용하는 경우 
Include conf/extra/httpd-vhosts.conf   <-- 주석해제 

 

2. httpd.conf 혹은 httpd-vhost.conf 파일의 VirtualHost 80포트설정에 Rewrite설정 코드 삽입.

 

<VirtualHost *:80>

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

</VirtualHost>

※Rewrite설정 코드 상세분석은 하단 참조. 

 

※ 주의점: SSL이 설정된 경우, httpd-ssl.conf의 VirtualHost에서 설정하는 것이 아님 !!!

 

3. 아파치 재시작 

 cd (아파치경로)/apache/bin
 ./apachectl restart

 

재시작 후, 원하는 페이지에 http:// ~~~ 로 접속 시, 자동으로  https:// ~~~ 로 접속되면 성공! 

 

 

+ 더 공부할 사람은 COME ON !! 

 

* Rewrite 코드 상세분석

 

-RewriteEngine

  : rewriting engine 활성화 여부.

 

-RewriteCond

  : RewriteRule과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewriteCond에서 설정한 패턴과 일치하는경우만,  Rule을 실행한다.

 

-RewriteRule

 : 실질적인 Rewrite규칙들을 적용하는 지시자. 

 : 사용법?   RewriteRule [Input URL] [Return URL]

    [Input URL]에는 Perl정규식을 사용할 수 있다. 

 

* Rewrite 지시자 (정규식) 

  • . : 다수의 한문자
  • ? : 0개 이상의 한문자
  • * : 0개 이상의 문자 또는 문자열
  • + : 1개 이상의 문자 또는 문자열
  • (chars) : (, ) 안의 문자또는 문자열을 그룹으로 묶는다.
  •           이 문자그룹은 [Return URL]에서 $N 의 변수로 활용할수 있다.
  • ^ : 문자열의 첫문(열)을 지정
  • $ : 문자열의 끝 문자(열)을 지정
  • \(역슬래쉬) : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거
  • {n} : 정확히 n번 반복
  • {n,} : n번 이상 반복
  • {n,m} : n 이상 m 이하 반복
  • [chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다.
  • 예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T

 

* Rewrite Subrutine 지시자

  • L : 뒤구문 여부를 무시하고 그 줄에서 끝낸다.
  • N : 새로운 Rule이 시작된다는 의미.
  • R : Redirection. 무조건 넘긴다. 뒤 주소로 넘긴다는 의미.
  • NC : 대소문자를 구별하지 않는다.
  • OR : 프로그래밍의 or와 유사.
  • QSA : Cond의 내용을 지난 결과에 덧붙인다.
  • NE : Out 될 값에 특수문자가 HexCode로 되어 포함되어 있는 경우.

 

예시의 R=301은 moved permanently. 즉, 그 주소로 영구 이동하는 것을 나타낸다. 

이렇게 하면 검색엔진이 인덱스를 다시 생성하기 때문에, 도메인 주소를 바꿨을 때에도 검색기들이 알아 차리고, 옛 주소를 새 주소로 갱신할 수 있다 함. 

 

 

 

참조: linuxize.com/post/redirect-http-to-https-in-apache/

 

반응형