웹사이트 검색

Ubuntu의 Apache에서 HTTP/2를 활성화하는 방법


월드 와이드 웹(www)이 시작된 이래 HTTP 프로토콜은 수년에 걸쳐 발전하여 안전하고 빠른 디지털 콘텐츠를 전 세계에 전달했습니다. 인터넷.

가장 널리 사용되는 버전은 HTTP 1.1이며, 이전 버전의 단점을 해결하기 위한 기능 향상 및 성능 최적화 기능이 포함되어 있지만 HTTP 1.1에서 해결된 몇 가지 다른 주요 기능에는 미치지 못합니다. >HTTP/2.

HTTP/1.1의 한계는 무엇입니까?

HTTP/1.1 프로토콜에는 특히 트래픽이 많은 웹 서버를 실행할 때 덜 이상적이게 만드는 다음과 같은 단점이 있습니다.

  1. 긴 HTTP 헤더로 인해 웹페이지 로드가 지연됩니다.
  2. HTTP/1.1은 TCP 연결당 각 파일에 대해 하나의 요청만 보낼 수 있습니다.
  3. HTTP/1.1이 모든 TCP 연결에 대해 하나의 요청을 처리한다는 점을 고려하면 브라우저는 요청을 동시에 처리하기 위해 대량의 병렬 TCP 연결을 보내야 합니다. 이로 인해 TCP 정체가 발생하고 궁극적으로는 대역폭 낭비와 네트워크 성능 저하가 발생합니다.

위에서 언급한 문제로 인해 성능 저하와 대역폭 사용에 따른 높은 오버헤드 비용이 발생하는 경우가 많습니다. HTTP/2는 이러한 문제를 해결하기 위해 등장했으며 이제 HTTP 프로토콜의 미래입니다.

HTTP/2 사용의 장점

이는 다음과 같은 이점을 제공합니다:

  1. 클라이언트 요청을 최소화하여 대역폭 소비를 줄이는 헤더 압축입니다. 그 결과 페이지 로드 속도가 빨라집니다.
  2. 하나의 TCP 연결을 통해 여러 요청을 다중화합니다. 서버와 클라이언트 모두 HTTP 요청을 여러 프레임으로 나누고 이를 다른 쪽 끝에서 다시 그룹화할 수 있습니다.
  3. 결과적으로 더 나은 SEO 순위로 이어지는 더 빠른 웹 성능.
  4. 대부분의 주류 브라우저는 HTTPS를 통해 HTTP/2를 로드하므로 보안이 향상되었습니다.
  5. HTTP/2는 헤더 압축 기능 덕분에 모바일 친화적인 것으로 간주됩니다.

즉, Ubuntu 20.04 LTSUbuntu 18.04 LTSApache에서 HTTP/2를 활성화할 예정입니다.

전제 조건:

시작하기 전에 HTTP/2를 활성화하기 전에 Apache 웹 서버에서 HTTPS를 활성화했는지 확인하세요. 이는 모든 주류 웹 브라우저가 HTTPS를 통해 HTTP/2를 지원하기 때문입니다. Let’s Encrypt 인증서를 사용하여 보안된 Apache 서버를 실행하는 Ubuntu 20.04의 인스턴스를 가리키는 도메인 이름이 있습니다.

또한 HTTP/2로 전환하려는 프로덕션 서버의 경우 Apache 2.4.26 이상 버전을 사용하는 것이 좋습니다.

실행 중인 Apache 버전을 확인하려면 다음 명령을 실행하세요.

apache2 -v

출력 결과를 보면 이 기사를 작성할 당시 최신 버전인 Apache 2.4.41을 사용하고 있음을 알 수 있습니다.

Apache 가상 호스트에서 HTTP/2 활성화

시작하려면 먼저 웹 서버가 HTTP/1.1을 실행 중인지 확인하세요. Ctrl +SHIFT + I 조합을 사용하여 Google 크롬에서 개발자 도구 섹션을 열면 브라우저에서 이 작업을 수행할 수 있습니다. '네트워크' 탭을 클릭하고 '프로토콜' 열을 찾습니다.

그런 다음, 다음 명령을 실행하여 Ubuntu에서 HTTP/2 모듈을 활성화합니다.

sudo a2enmod http2

다음으로, SSL 가상 호스트 파일을 찾아 편집합니다. Let's Encrypt를 사용하여 HTTPS를 활성화한 경우 le-ssl.conf를 사용하여 새 파일이 생성됩니다. 접미사.

sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

태그 뒤에 아래 지시어를 삽입하세요.

Protocols h2 http/1.1

변경 사항을 저장하려면 Apache 웹 서버를 다시 시작하세요.

sudo systemctl restart apache2

HTTP/2가 활성화되어 있는지 확인하려면 show와 같이 다음 컬 명령을 사용하여 HTTP 헤더를 가져옵니다.

curl -I --http2 -s https://domain.com/ | grep HTTP

출력이 표시되어야 합니다.

HTTP/2 200

브라우저에서 사이트를 다시 로드합니다. 그런 다음 개발자 도구로 돌아가 '프로토콜' 열에 h2 라벨이 표시된 HTTP/2를 확인하세요.

Apache와 함께 mod_php 모듈을 사용하는 경우

mod_php 모듈과 함께 Apache를 실행하는 경우 PHP-FPM으로 전환해야 합니다. 이는 mod_php 모듈이 HTTP/2에서 지원하지 않는 프리포크 MPM 모듈을 사용하기 때문입니다. 프리포크 MPM을 제거하고 HTTP/2에서 지원하는 mpm_event 모듈로 전환해야 합니다.

예를 들어 PHP 7.4 mod_php 모듈을 사용하는 경우 다음과 같이 비활성화합니다.

sudo a2dismod php7.4 

그런 다음 프리포크 MPM 모듈을 비활성화합니다.

sudo a2dismod mpm_prefork

모듈을 비활성화한 후 다음으로 표시된 대로 Event MPM, Fast_CGIsetenvif 모듈을 활성화합니다.

sudo a2enmod mpm_event proxy_fcgi setenvif

우분투에 PHP-FPM 설치

그런 다음 그림과 같이 PHP-FPM을 설치하고 시작합니다.

sudo apt install php7.4-fpm 
sudo systemctl start php7.4-fpm

그런 다음 PHP-FPM을 활성화하여 부팅 시 시작합니다.

sudo systemctl enable php7.4-fpm

그런 다음 PHP-FPM을 Apache의 PHP 핸들러로 활성화하고 Apache 웹 서버를 다시 시작하여 변경 사항을 적용합니다.

sudo a2enconf php7.4-fpm

Apache Ubuntu에서 HTTP/2 지원 활성화

그런 다음 이전과 같이 HTTP/2 모듈을 활성화합니다.

sudo a2enmod http2

모든 변경 사항을 동기화하려면 Apache를 다시 시작하십시오.

sudo systemctl restart apache2

마지막으로, 표시된 대로 컬 명령을 사용하여 서버가 HTTP/2 프로토콜을 사용하고 있는지 테스트할 수 있습니다.

curl -I --http2 -s https://domain.com/ | grep HTTP

Google Chrome 브라우저의 개발자 도구를 사용하여 이전에 문서화된 대로 확인할 수도 있습니다. 이 가이드를 모두 마치겠습니다. 유용한 정보를 얻으셨기를 바라며 Apache에서 HTTP/2를 쉽게 활성화할 수 있기를 바랍니다.