SW/리눅스

Linux : Apache : HTTP에서 HTTPS로 리다이렉트 방법, 예제, 명령어

얇은생각 2022. 6. 1. 07:30
반응형

Apache HTTP 서버는 세계에서 가장 인기 있는 웹 서버 중 하나입니다. 인터넷 웹 사이트의 많은 부분을 지원하는 오픈 소스 및 크로스 플랫폼 HTTP 서버입니다. Apache는 추가 모듈을 통해 확장할 수 있는 많은 강력한 기능을 제공합니다.

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

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

HTTP보다 HTTPS를 사용하면 다음과 같은 여러 가지 이점이 있습니다.

모든 데이터는 양방향으로 암호화됩니다. 따라서 중요한 정보를 가로채면 읽을 수 없습니다.

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

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

구글은 HTTPS 웹사이트를 선호합니다. HTTPS를 통해 서비스를 제공하는 경우 사이트의 순위가 더 높아집니다.

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

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

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

 

 

Linux : Apache : HTTP에서 HTTPS로 리다이렉트 방법, 예제, 명령어

 

 

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

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

일반적으로 SSL 인증서가 도메인에 설치되면 해당 도메인에 대한 두 개의 가상 호스트 지침이 있습니다. 첫 번째는 포트 80의 사이트 HTTP 버전에 대한 것이고 다른 하나는 포트 443의 HTTPS 버전에 대한 것입니다.

CentOS 및 Fedora와 같은 Red-Hat 기반 distros에서 가상 호스트 파일은 /etc/httpd/conf.d에 저장됩니다. Debian 및 Ubuntu와 같은 파생 제품에서는 파일이 /etc/apache2/sites-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 가상 호스트 내부에 강조 표시된 Redirect 영구 / https://example.com/ 행은 트래픽을 HTTPS 버전의 사이트로 리디렉션합니다. 일반적으로 사이트의 HTTPS www 버전을 비 www 또는 그 반대로 리디렉션합니다. 다음은 구성 예제입니다.

<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 웹 서버의 디렉터리당 구성 파일입니다. 이 파일은 Apache가 파일이 있는 디렉토리에서 파일을 처리하는 방법을 정의하고 추가 기능을 활성화/비활성화하는 데 사용할 수 있습니다.

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

이 메서드를 사용하려면 mod_rewrite 모듈을 Apache 서버에 로드해야 합니다. 이 모듈은 대부분의 서버에서 기본적으로 로드됩니다.

가능하면 가상 호스트에 리디렉션을 만드는 것이 더 간단하고 안전하므로 이 리디렉션을 만드는 것을 선호합니다.

모든 HTTP 트래픽을 HTTPS로 리디렉션하려면 루트 .htaccess 파일을 열고 다음 코드를 추가하십시오.

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

 

 

다음은 코드의 의미입니다.

RewriteEngine 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 리디렉트를 구성하는 것입니다.

반응형