리눅스 Apache HTTP를 강제로 HTTPS로 바꿔 연결하는 방법

Posted by 돼지로운생활
2019. 2. 19. 08:00 개발자의 길

 보통 증권사나 금융사등 많은 곳들이 HTTPS의 연결을 사용하고 있다.

저런 곳들이 아니어도 지금 내가 글을 작성하고 있는 이 티스토리만 보더라도 HTTPS로 연결이 된다.



 아무래도 보안이 취약하기 때문일텐데, 직접 구축한 NAS에도 HTTP로 접속을 하는것이 보기 싫었다.

그래서 오늘은 리눅스에서 Apache를 올렸을 때, HTTP연결이 들어오면 강제로 HTTPS로 연결시키는 방법에 대해 알아보려고 한다.


+ 라즈베리파이 NAS에 이 방법을 적용했다.


Apache HTTP연결 HTTPS로 변경하기


 우선 아파치가 설치가 되어 웹서버가 잘 작동한다는 가정하에 바로 진행하도록 하겠다.


1
> cd /etc/apache2/sites-available/
cs


아파치의 config파일들이 모여있는 곳으로 이동하자. 그 폴더에서 80번 포트가 물려있는 파일을 찾아서 열어준다.

본인의 경우에는 000-default.conf 파일이 80번 포트를 잡고 있어서 이걸로 열었다.


1
> sudo vi 000-default.conf 

cs


자, 파일을 열어보면 이런형식으로 작성이 되어 있을 텐데 주석친 부분만 복사해서 붙여넣기한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost *:80>
   DocumentRoot 여러분의 루트경로 ex. /var/www/html
   ServerName 여러분의 도메인 ex. 1234.5678.com
   ServerAlias www.gabia.com
 
   # 아래부분추가
   <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
   </IfModule>
   # 아래부분추가 끝
</VirtualHost>
cs


여러분의 도메인으로 들어왔을때 mod_rewrite가 모듈에 올라가 있고 HTTPS로 요청한것이 아니라면 강제로 리다이렉션 하는 방법이다.

RewriteRule의[R,L] 에서 R은 강제로 redirect 시킨다는 뜻이다. http status code에 의해 분기가 가능하다.

L은 마지막 RewriteRule 이라는 뜻 입니다. 저렇게 [L]표시가 있다면 그 다음 라인에 RewirteRule을 추가해도 전혀 먹히지 않는다.

만약 해당 설정 아래에 또다른 RewriteRule이 필요하다면 L를 빼면 된다. 그리고 그 라인에 [L]을 추가하자.


1
> sudo service apache2 restart
cs


그 다음 Apache를 재시작해주자. 

그러면 끝! 


다른 방법도 있긴한데, 이게 더 보기 좋으니 이 방법을 추천한다.



유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로