Ubuntu 18.04, apache2에 http/2 설정하기.
* 작업환경
OS:Ubuntu 18.04
Apache2 : 2.4.29
https: 사용중(Let’s encrypt 인증서)
php: mod_php 7.2
별도 설정없이 apache2를 사용한다면 대부분 http/1.1을 사용하고 있을 것이다. 몇 가지 이유(약간의 속도향상, PUSH사용 등)로 http/2를 사용하고자 한다면 설정전 반드시 확인해야 할 사항이 있다.
1. apache2 버전: apache2는 http/2를 2.4.24 버전부터 지원하기 시작했다. 따라서, 버전을 확인해야한다.
2. https 사용: http/2는 HTTPS를 이용하므로 반드시 SSL 설정이 되어 있어야 한다.
3. php-fpm 사용: http/2는 apache의 prefork 모듈과 호환되지 않으므로 MPM으로 전환해야한다. php를 사용하는경우는 mod_php 대신 php-fpm 모듈을 사용해야한다.
* 설정
먼저, 필요한 패키지가 설치되어 있는지 확인한다.
내 경우는 mod_php를 사용중이었고, php-fpm모듈은 설치되어 있지 않았다. 따라서, 아래 명령어로 설치했다.
# apt-get install php7.2-fpm
이제, proxy_fcgi과, mpm_event 모듈을 사용하도록 하고, mod_php, mod_prefork 모듈은 사용하지 않도록한다.
그리고, php-fpm모듈을 설정한다.
# a2enmod proxy_fcgi # a2enmod mpm_event # a2enconf php7.2-fpm # a2dismod php7.2 # a2dismod mpm_prefork
https ssl 인증서는 Let’s encrypt를 사용중이므로 따로 설명하지 않는다.
이제, http/2를 사용하도록 /etc/apache2/apache2.conf 화일에 아래 내용을 추가한다.(여기에 추가하면 모든 virtual host에 적용됨)
개별 사이트만 적용하려면 각 virtualhost에 추가하면 된다.
Protocols h2 http/1.1
또는,
개별 사이트 설정화일에
<VirtualHost *:443> <IfModule http2_module> ProtocolsHonorOrder On Protocols h2 http/1.1 </IfModule>
설정을 확인해 보고 이상 없으면 apache2를 다시 시작한다.
# apachectl configtest Syntax OK #systemctl restart apache2
이제 access 로그를 보면 아래와 같이 http/2가 지원 됨을 확인 할 수 있다.
1.229.250.5 - - [26/Sep/2019:15:59:08 +0900] "POST / HTTP/1.1" 200 6343 "https://whois.boxcorea.com/" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" 1.229.250.5 - - [26/Sep/2019:15:59:09 +0900] "GET /favicon.ico HTTP/2.0" 404 185 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7.0; rv:11.0) like Gecko" 1.229.250.5 - - [26/Sep/2019:15:59:46 +0900] "POST / HTTP/2.0" 200 2863 "https://whois.boxcorea.com/" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
또는, 아래 사이트에서도 확인 가능하다.
https://http2.pro