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 리디렉션을 강제로 수행할 수 있습니다.
가상 호스트를 사용하여 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 리디렉트를 구성하는 것입니다.
'SW > 리눅스' 카테고리의 다른 글
Linux : Debian 10 : Let's Encrypt로 Apache 보호 방법, 예제, 명령어 (0) | 2022.06.03 |
---|---|
Linux : CentOS 8 : Anaconda 설치 방법, 예제, 명령어 (0) | 2022.06.02 |
Linux : CentOS 8 : Apache Maven 설치 방법, 예제, 명령어 (0) | 2022.05.31 |
Linux : Debian 10 : TensorFlow 설치 방법, 예제, 명령어 (0) | 2022.05.30 |
Linux : /etc/shadow 파일 이해 방법, 예제, 명령어 (0) | 2022.05.29 |