SW/리눅스

Linux : Apache : HTTP를 HTTPS로 리디렉션 방법, 예제, 명령어

얇은생각 2024. 1. 25. 07:30
반응형

아파치 HTTP 서버는 세계에서 가장 인기 있는 웹 서버 중 하나입니다. 그것은 인터넷 웹사이트의 많은 부분에 전원을 공급하는 오픈 소스이자 크로스 플랫폼의 HTTP 서버입니다. 아파치는 추가 모듈을 통해 확장될 수 있는 많은 강력한 기능들을 제공합니다.

웹 사이트 소유자나 시스템 관리자라면 정기적으로 아파치를 상대하고 있을 가능성이 높습니다. 수행할 수 있는 가장 일반적인 작업 중 하나는 HTTP 트래픽을 보안(HTTPS) 버전의 웹 사이트로 리디렉션하는 것입니다.

요청과 응답이 평문으로 전송되고 반환되는 HTTP와 달리 HTTPS TLS/SSL을 사용하여 클라이언트와 서버 간의 통신을 암호화합니다.

 

 

Linux : Apache : HTTP를 HTTPS로 리디렉션 방법, 예제, 명령어

 

 

HTTP보다 HTTPS를 사용하면 다음과 같은 많은 이점이 있습니다: 

모든 데이터는 양방향으로 암호화됩니다. 그 결과, 민감한 정보를 가로채면 읽을 수 없습니다.

Google Chrome 및 기타 모든 인기 브라우저는 웹 사이트를 안전한 것으로 표시합니다.

HTTPS를 사용하면 HTTP/2 프로토콜을 사용할 수 있어 사이트 성능이 크게 향상됩니다.

구글은 HTTPS 웹사이트를 선호합니다. 당신의 웹사이트는 HTTPS를 통해 제공된다면 더 좋은 순위를 차지할 것입니다.

 

 

이 가이드에서는 Apache에서 HTTP 트래픽을 HTTPS로 리디렉션하는 방법에 대해 설명합니다. 

아파치에서 HTTPS로 리디렉션하는 방법은 여러 가지가 있습니다. 아파치가 실행되는 리눅스 서버에 루트 액세스 권한이 있는 경우 도메인의 가상 호스트 구성 파일에 리디렉션을 설정하는 것이 좋습니다. 그렇지 않으면 도메인의 .htaccess 파일에 리디렉션을 설정할 수 있습니다.

cPanel과 같은 일부 제어판에서는 마우스 클릭 몇 번으로 HTTPS 리디렉션을 강제로 수행할 수 있습니다.

 

 

가상 호스트를 사용하여 HTTP HTTPS로 리디렉션

Apache Virtual Hosts는 서버에서 호스트되는 하나 이상의 도메인의 설정을 정의합니다. 가상 호스트 지시문에서 사이트 문서 루트(웹 사이트 파일이 들어 있는 디렉터리)를 지정하고, 각 사이트에 대해 별도의 보안 정책을 생성하고, 서로 다른 SSL 인증서 사용, 리디렉션 구성 등을 수행할 수 있습니다.

일반적으로 도메인에 SSL 인증서를 설치할 때 해당 도메인에 대해 두 개의 가상 호스트 지시자를 갖게 됩니다. 첫 번째는 포트 80에 있는 사이트의 HTTP 버전에 대한 것이고, 다른 하나는 포트 443에 있는 HTTPS 버전에 대한 것입니다.

CentOS Fedora와 같은 Red-Hat 기반의 분산에서는 가상 호스트 파일이 /etc/httpd/conf.d에 저장됩니다. Debian Ubuntu와 같은 파생 제품에 있는 동안 파일은 /etc/apache2/site-available 디렉토리에 저장됩니다.

웹 사이트를 HTTPS로 리디렉션하려면 다음 예제와 같이 리디렉션 지침을 사용합니다:

<VirtualHost *:80> 
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http/1.1

  # SSL Configuration

  # Other Apache Configuration

</VirtualHost>

 

 

코드를 설명해 드리겠습니다HTTP용 가상 호스트 지시어와 HTTPS 버전 사이트용 가상 호스트 지시어 두 가지를 사용하고 있습니다.

VirtualHost *:80 - Apache 서버가 지정된 도메인의 포트 80(HTTP)에서 수신 연결을 수신합니다.

VirtualHost *:443 - Apache 서버가 지정된 도메인의 포트 443(HTTPS)에서 수신 연결을 수신합니다.

 

 

ServerName ServerAlias 지시문에서 가상 호스트의 도메인 이름을 지정하고 있습니다. 도메인 이름으로 바꾸어야 합니다.

강조 표시된 행인 HTTP 가상 호스트 내의 영구 / https://example.com/ 에서 트래픽을 HTTPS 버전의 사이트로 리디렉션합니다.

일반적으로 사이트의 HTTPS www 버전을 non-ww로 리디렉션하거나 그 반대의 경우도 마찬가지입니다. 다음은 구성 예입니다:

<VirtualHost *:80> 
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.example.com'">
    Redirect permanent / https://example.com/
  </If>

  # SSL Configuration

  # Other Apache Configuration

</VirtualHost>

 

 

HTTPS 가상 호스트 내부의 코드( 강조 표시된 행)는 요청 헤더에 www 도메인이 포함되어 있는지 확인하고 www가 아닌 버전으로 리디렉션합니다.

구성 파일을 변경할 때마다 Apache 서비스를 다시 시작하거나 다시 로드하여 변경 사항을 적용해야 합니다:

 

데비안 및 우분투:

sudo systemctl reload apache2

 

 

CentOS Fedora:

sudo systemctl reload httpd

 

 

 

.htaccess를 사용하여 HTTP HTTPS로 리디렉션

.htaccess Apache Webserver의 디렉토리 단위 구성 파일입니다. 이 파일은 파일이 있는 디렉토리에서 Apache가 파일을 서비스하는 방법을 정의하고 추가 기능을 설정/해제하는 데 사용할 수 있습니다.

일반적으로 .htaccess 파일은 도메인 루트 디렉터리에 배치되지만 하위 디렉터리에는 다른 .htaccess 파일이 있을 수 있습니다.

이 방법을 사용하려면 mod_rewrite 모듈을 Apache 서버에 로드해야 합니다. 이 모듈은 대부분의 서버에서 기본적으로 로드됩니다. 가능하면 더 간단하고 안전하기 때문에 가상 호스트에 리디렉션을 생성하는 것을 선호합니다.

모든 HTTP 트래픽을 HTTPS로 리디렉션하려면 root .htaccess 파일을 열고 다음 코드를 추가합니다:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

 

 

코드의 의미는 다음과 같습니다:

Rewrite Engine On - Rewrite 기능을 활성화합니다.

RewriteCond %{HTTPS} off - HTTP 연결을 확인하고 조건이 충족되면 다음 행이 실행됩니다.

RewriteRule ^(.*)$ https://example.com/$1 [L,R= 301] - 상태 코드 301(영구적으로 이동됨) HTTP HTTPS로 리디렉션합니다. 도메인 이름을 변경해야 합니다.

 

아래 예는 www로 요청이 시작되는지 확인하는 추가 조건이 있습니다모든 방문자가 HTTPS non-www 버전의 사이트를 사용하도록 강제하려면 이를 사용합니다:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

 

 

.htaccess 파일을 편집할 때 Apache는 각 요청에 대해 파일을 읽기 때문에 서버를 재시작할 필요가 없습니다.

 

 

결론

Apache에서 HTTP HTTPS로 리디렉션하는 바람직한 방법은 도메인의 가상 호스트에서 301 리디렉션을 구성하는 것입니다.

반응형