Apache http2 적용 방법 (mod_http2)- 삽질중인 개발자
속도가 중요시되는 서비스에서 이제는 많은 기업이 HTTP2를 적용하고 있다. ( 구글 같은 경우에는 HTTP3을 적용 중이다. )
HTTP1.1과 HTTP2.0 의 차이는 대충 요약하자면 이것저것 도입해서 지연을 감소시켜 HTTP1.1 대비 속도를 증가시켰다. (httpwg.org/specs/rfc7540.html 이쪽에 자세하게 나와 있다.)
mod_http2는 아파치 2.4.17 버전 이상에서 적용이 가능하다. (httpd.apache.org/docs/2.4/mod/mod_http2.html)
또한 http2를 적용하기 위해서는 ssl 이 적용되어 있어야 한다. ( mod_ssl )
1. mod_http2 적용 방법
CentOS 7의 경우 yum install httpd를 하는 경우 아파치 2.4.6 버전이 설치가 되기에 yum repository에 대하여 추가 설정을 해야 한다.
CentOS 7의 기본 yum repository의 아파치의 버전은 너무 낮기에 codeit 사설 repo에서 재 설치하는 게 가장 편하다.
재 설치가 되면 기존에 있던 httpd.conf 파일이 파일명이 변경되고 새로운 httpd.conf 파일이 생긴다 그러니 httpd.conf 파일에 추가로 세팅해둔 값이 있다면 똑같이 추가해야 한다. (ex ) ServerName )
yum install -y epel-release
#codeit 사설 repo
cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo
# 아파치 다운 받을 수 있는 버전 확인 2.4.17 이상이면 된다.
yum info httpd
yum install httpd
#mod_ssl 이 설치가 안되어 있는 경우 설치하자.
yum install mod_ssl
위와 같이 재 설치를 하고 실행을 하면 아파치에서 기본 모듈로 지원을 해주고 있기에 자동으로 적용이 되어 있다.
( /usr/lib64/httpd/modules 에 mod_http2.so 파일이 추가되어 있다. )
적용하다 보니 SSL 관련 ERROR가 발생한적이 있다. (이게 크롬 디버그 창에서 보면 error가 안 뜨는데 아이폰에서 에러가 발생했었다. 에러코드가 421이었던 거 같다. )
만약 아파치의 로그를 확인해서 만약 SSL 관련 문제라면
SSLEngine
SSLCACertificateFile
SSLCertificateFile
SSLCertificateKeyFile
SSLProtocol
SSLCipherSuite
위의 세팅들이 잘 적용되었는지 확인해보면 된다.