AWS Lightsail 워드프레스를 운영하고 있는데 최근에 최적화를 위해서 다양한 방법을 알아보는 와중에 HTTP/2 라는 것을 알게 되었습니다. 기존에 속도 최적화를 위한 다양한 방법들을 검색할 때는 본 적이 없는 내용이었는데 GTmetrix 사이트에서 측정을 한 결과 추천 항목에서 볼 수 있었습니다.
HTTP/2는 월드 와이드 웹에서 쓰이는 HTTP 프로토콜로 HTTP 1.1 이 텍스트 전송 프로토콜이라면 HTTP/2는 사진, 동영상 등과 같은 고용량의 데이터 전송을 위해서 개발되었습니다.
HTTP 1.1 프로토콜이 하나의 파일만 전송한다면 HTTP/2는 병목 현상 없이 한꺼번에 파일을 전송하기 때문에 지연 시간을 감소시켜 워드프레스 페이지 로드 속도를 개선할 수 있습니다.
[지원하는 기능]
- HTTP 헤더 데이터 압축
- 서버 푸시 기술
- 요청을 HTTP 파이프라인으로 처리
- HTTP 1.X의 HOL blocking 문제 해결
- TCP 연결 하나로 여러 요청을 다중화 처리
목차
AWS Lightsail HTTP/2 확인
먼저 HTTP/2가 적용되어 있는지 확인을 해봐야 하는데 Geekflare HTTP/2 Test 사이트에서 자신의 주소를 입력하게 되면 적용되어 있는지 확인할 수 있습니다.
사이트 이용하지 않고 확인하는 방법은 크롬과 엣지 브라우저에서 F12키를 누른 후에 Network 선택하고 Name 빈 공간 마우스 우 클릭해서 Protocol 를 활성화하게 되면 위에 보이는 것처럼 HTTP/2가 적용되어 있는지 확인할 수 있습니다.
test ! -f “/opt/bitnami/common/bin/openssl” && echo “Approach A: Using system packages.” || echo “Approach B: Self-contained installation
마지막 HTTP/2 적용되어 있는지 확인하는 방법은 라이트 세일 SSH 로 접속하신 후에 위의 내용을 입력하게 되면 위에 보이는 Approach A 라고 나오게 되면 적용이 된 것이고 Approach B 라고 나오게 되면 적용되지 않은 상태입니다.
테스트를 해서 HTTP/2가 적용되어 있지 않다면 아래의 설명을 보시고 적용하시면 됩니다.
HTTP/2 모듈 활성화
파일 질라 같은 프로그램을 사용해서 /opt/bitnami/apache2/conf/httpd.conf 파일 보기/편집을 하신 후에 #LoadModule http2_module modules/mod_http2.so 모듈을 활성화해 주셔야 합니다.
모듈을 활성화하는 방법은 LoadModule 앞에 있는 # 기호를 제거해주시면 활성화가 됩니다.
파일 질라 프로그램을 사용하지 못할 경우에는 라이트 세일 SSH로 접속하신 후에 sudo nano /opt/bitnami/apache2/conf/httpd.conf 입력해서 모듈을 활성해주시면 됩니다. (Ctrl + O 수정 내용 저장, Ctrl + X 편집기 닫기)
VirtualHost 지시문 추가
<VirtualHost _default_:80>
…
Protocols h2 h2c http/1.1
H2Direct on
</VirtualHost>
<VirtualHost _default_:443>
…
Protocols h2 h2c http/1.1
H2Direct on
</VirtualHost>
Bitnami 공식 설명서를 보게 되면 위에 빨간색 글자로 된 부분을 /opt/bitnami/apache2/bitnami/bitnami.conf 에 추가를 하라고 합니다.
근데 공식 설명서를 보면 어느 위치에 추가를 해야 하는지 정확하게 설명이 없기 때문에 저도 검색을 해서 찾았습니다.
Protocols h2 h2c http/1.1
H2Direct on
위의 내용을 Binami.conf 파일에서 <VirtualHost_default : 80> , < VirtualHost_default : 443> 에
# END: Support domain renewal when using mod_proxy within Location 문구를 찾아서 아래에 추가를 해주시면 됩니다. (80과 443 둘 다 추가)
아파치 재 시작
sudo sh /opt/bitnami/ctlscript.sh restart apache
이제 마지막으로 AWS Lightsail SSH 접속하신 후에 위의 내용을 입력해서 아파치를 재 시작해주시면 됩니다.
아파치 재 시작이 완료된 후에 Geekflare HTTP/2 Test 사이트에서 테스트를 하게 되면 위에 보이는 것처럼 HTTP/2가 워드프레스에 적용된 것을 확인할 수 있을 것입니다.
AWS Lightsail 은 HTTP/2 지원하기 때문에 위의 설명대로 하시면 어렵지 않게 적용할 수 있을 것입니다.
※ 2022년 9월 27일 추가 사항
새롭게 인스턴스를 만들게 되면 위에 설명한 bitnami.conf 에 <VirtualHost _default_:443> 내용이 보이지 않습니다. 저도 이유를 찾기 위해서 노력을 해보았지만 지식이 풍부하지 않기 때문에 찾을 수 없어서 추가적인 방법으로 http/2를 작동하게 했습니다.
<VirtualHost _default_:443> 가 보인다면 위의 방법대로 하시면 되고 만약에 없다면 아래의 방법으로 하시면 됩니다.
sudo nano /opt/bitnami/apache/conf/bitnami/bitnami.conf
AWS Lightsail SSH 에서 위의 내용을 입력하신 후에 맨 위에 Protocols h2 h2c http/1.1 이라고 입력하게 되면 http/2를 작동할 수 있을 것입니다.