아파치 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/
'Back-end > Network' 카테고리의 다른 글
스토리지란? DAS란? / NAS란? / SAN 이란? 차이점? (0) | 2021.02.08 |
---|---|
MIME type이란? (0) | 2021.02.03 |
JSON이란? / JSONP 란? 차이점 비교. (0) | 2020.12.22 |
아파치Apache - 톰캣 Tomcat 연동하는 이유? AJP란? (4) | 2020.12.01 |
NFS 란? Network File System. NFS 구축해보기 (0) | 2020.11.24 |