패키지에서만 CentOS Apache를 HTTP/2 지원으로 설정

HTTP/2



CentOS 7.4에서 OpenSSL이 1.0.2로 업그레이드되었으므로 패키지만으로 Apache를 HTTP/2와 호환할 수 있습니다.

VirtualBox의 CentOS 7.4 minimal 가상 환경에서 검증하는 단계를 소개합니다.

Nginx에 대해서는 나중에 공개되는 다른 기사에서 소개합니다.

아파치



RHSCL (SCLo rh) 도입


yum -y install centos-release-scl-rh yum-utils
yum-config-manager --enable centos-sclo-rh-testing

표준 리포지토리에서 Apache는 2.4.6이므로 RHSCL 클론의 SCLo rh 리포지토리centos-release-scl-rh를 도입합니다.

이 상태에서는 HTTP/2에 대응할 수 있어도 ALPN에 대응할 수 없고, 모던 브라우저로 확인할 수 없기 때문에, SCLo rh Testing 리포지터리centos-sclo-rh-testing를 유효하게 합니다.

필수 라이브러리 설치 및 환경 정비


yum -y install httpd24{,-mod_ssl,-nghttp2}
source scl_source enable httpd24
echo -e '#!/bin/bash\nsource scl_source enable httpd24' > /etc/profile.d/httpd24.sh
ln -s {/opt/rh/httpd24/root,}/etc/httpd
ln -s {/opt/rh/httpd24/root,}/var/www
ln -s /etc/httpd/logs /var/log/httpd
ln -s /{usr/lib/systemd/system/httpd24-,etc/systemd/system/}httpd.service
systemctl daemon-reload
httpd mod_ssl libnghttp2에 해당하는 패키지를 설치합니다.httpd24 패키지는 소프트웨어 컬렉션이기 때문에 파일의 배치등이 표준 패키지와 달리 관리하기 어려우므로, 영향이 적은 범위에서 최대한 같은 패스 참조를 할 수 있도록 조정합니다.

MPM을 Prefork에서 Event로 변경


sed -i '/mod_mpm_prefork/ s/^/#/' /etc/httpd/conf.modules.d/00-mpm.conf
sed -i '/mod_mpm_event/ s/#//' /etc/httpd/conf.modules.d/00-mpm.conf

Apache 2.4.27부터 Prefork 모드에서는 HTTP/2가 더 이상 유효하지 않으므로1 Events 모드로 변경해야 합니다.

프로토콜 지정


cat << "_EOF_" > /etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>
    Protocols h2c http/1.1
</VirtualHost>
<VirtualHost *:443>
    ServerName localhost
    Protocols h2 http/1.1
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
</VirtualHost>
_EOF_

여기서 인증서는 OpenSSL 표준 샘플을 사용합니다.
443 포트 용 DocumentRoot을 지정하는 경우 /var/www/html 등의 심볼릭 링크를 지정하면 오류 출력없이 무시되므로주의하십시오.

FirewallD


firewall-cmd --add-service=http{,s} --permanent && firewall-cmd --reload && firewall-cmd --list-services | grep http

시작


systemctl start httpd && systemctl enable $_

샘플 파일


echo "HTTP/2 Test" >> /var/www/html/index.html

로컬 PC 설정



hosts
192.168.56.101 localhost

VirtualBox와 같은 가상 환경의 경우 hosts 파일을 편집하여 localhost 도메인에서 참조할 수 있어야 합니다.

브라우저 참조





Firefox 또는 Safari와 같은 브라우저에서 개발자 도구를 표시하고 https://localhost/을 참조하면 프로토콜이 h2인지 확인할 수 있습니다. (Chrome라면 hosts 재기록에 의한 localhost 참조할 수 없는 것 같습니다.회피책을 아시는 분이 있으면 정보 제공을 부탁드리겠습니다.)

Let's Encrypt



인증서 취득


yum -y install certbot
certbot certonly --standalone -d example.jp -m [email protected] --agree-tos

실제 도메인에서 시도하는 경우 Let's Encrypt에서 얻는 것이 좋습니다.
RHSCL httpd24 패키지를 사용하는 편리함을 위해 필요한 표준 httpd 패키지와 충돌 python-certbot-apache 패키지를 사용할 수 없으므로 번거롭지만 certonly로 실행해야합니다.

인증서 지정


    SSLCertificateFile    /etc/letsencrypt/live/example.jp/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.jp/privkey.pem

인증서는 위의 경로에 심볼릭 링크를 생성하므로 <VirtualHost *:443> 지시문에 지정합니다.



h tp // w w. 아파치. 오 rg / st / h tpd / 찬 S_2.4 

좋은 웹페이지 즐겨찾기