1. HTTP -> HTTPS Redirect
SSL인증서를 설치하여 https를 활성화 해도, 일부 사용자는 계속해서 http포트로 연결을 시도하려고 한다.
http포트를 막는 것도 하나의 방법이 될 수는 있지만, 일일이 다 안내를 해주는 것은 굉장히 귀찮은 일이 될 수 있다.
따라서, http포트로 접속하는 사용자들을 강제로 https로 접속하게 만들어 주는 것이 해결책이 될 수 있다.
2. Rewrite / Redirect
SSL 인증서 설치까지는 완료되어, https가 활성화 되었다는 가정하에 진행해보자.
방법은 두 가지가 있다.
1) Rewrite
들어온 url을 rewrite하여 새로운 url을 호출하게 된다.
rewrite 기능을 사용하기 위해서는 mod_rewrite module이 필요하다.
httpd.conf
Include ${APACHE_HOME}/conf/extra/httpd-vhosts.conf LoadModule rewrite_module modules/mod_rewrite.so |
httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "/www/example" ServerName www.example.com RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L] </VirtualHost> |
RewriteEngine : 엔진 사용 여부를 정한다. Default는 Off로 되어 있기 때문에, 사용하기 위해선 On으로 변경이 필요하다.
RewriteCond : 조건문을 설정한다. 위 예시의 경우, HTTPS가 아닌 경우를 뜻한다.
RewriteRule : 조건에 따른 규칙을 설정하고 규칙에 따른 동작을 지정한다. RewriteRule 의 사용 범위는 httpd.conf 에 사용하면 전역적으로 반영되며 <VirtualHost>나 <Directory>, <Location> 에 사용할 경우 해당 범위에만 효과를 미친다.
httpd.apache.org/docs/2.4/ko/mod/mod_rewrite.html
2) Redirect
들어온 요청을 redirect 하여 다른 url로 보낸다.
httpd.conf
Include ${APACHE_HOME}/conf/extra/httpd-vhosts.conf |
httpd-vhosts.conf
<VirtualHost *:80> ServerName www.example.com Redirect permanent / https://www.example.co.kr/ </VirtualHost> |
앞에서 설명한 설정 지시어들은 아파치가 파일시스템의 특정 장소에 있는 내용을 클라이언트에게 보내게 만든다. 그러나 때때로 요청한 내용이 다른 URL에 있다고 클라이언트에게 알려주어, 클라이언트가 새로 그 URL을 요청하도록 만드는 것이 좋을 때가 있다. 이를 리다이렉션(redirection)이라고 하며, Redirect 지시어를 사용한다.
예를 들어, DocumentRoot 아래 /foo/ 디렉토리의 내용을 새로 /bar/ 디렉토리로 옮겼다면 다음과 같이 클라이언트가 새로운 위치를 요청하도록 한다:
Redirect permanent /foo/ http://www.example.com/bar/ |
그러면 www.example.com 서버의 /foo/로 시작하는 URL-경로는 /foo/를 /bar/로 바꾼 URL로 리다이렉션된다. 클라이언트를 원래 서버외에 어떤 다른 서버로도 리다이렉션할 수 있다.
또, 아파치는 더 복잡한 재작성 문제를 위해 RedirectMatch 지시어를 제공한다. 예를 들어, 다른 요청은 그대로 두고 사이트 홈페이지에 대한 요청만을 다른 사이트로 리다이렉션하려면:
RedirectMatch permanent ^/$ http://www.example.com/startpage.html |
임시로 사이트의 모든 페이지를 다른 사이트의 특정 페이지로 리다이렉션하려면:
RedirectMatch temp .* http://othersite.example.com/startpage.html |
3. 결론
Rewirte, Rediret 모두 사용 가능하다. 상황에 따라 원하는 방식으로 설정을 진행하면 된다.
mod_rewrite의 경우, 조건에 따라 설정할 수 있는 방법이 상당히 많고 redirect에 비해 복잡하다.
강력한 규칙이 필요한 경우 mod_rewrite, 단순한 리다이렉션 기능이 필요한 경우 redirect를 쓰는 것이 좋을 듯 하다.
'IT > MW' 카테고리의 다른 글
[Apache/Tomcat] mod_jk vs mod_proxy (0) | 2021.04.05 |
---|---|
[Tomcat] "/", "\" URI에서 사용 (0) | 2021.03.26 |
[WAS][troubleshooting] Unsupported major.minor version (0) | 2021.03.03 |
[Apache] Log (0) | 2020.09.21 |
08. Application Server, Servlet Container (0) | 2020.06.16 |