HTTP/2
CentOS 7.4 から OpenSSL が 1.0.2 にバージョンアップされたため、完全にパッケージのみで Nginx を HTTP/2 に対応させることが可能になりました。
Apache は「パッケージのみで CentOS の Apache を HTTP/2 対応にする」を参照してください。
Nginx
Nginx は 1.9.5 から HTTP/2 がサポートされました。1
リポジトリ
EPEL リポジトリおよび Nginx 公式リポジトリのいずれでも Nginx 1.12.2 がインストールされますが、設定ファイルなどの内容が異なります。
EPEL リポジトリ
yum -y install epel-release && yum -y update && yum -y install nginx
sed -i'/^# / s/^#//' /etc/nginx/nginx.conf
EPEL リポジトリで 1.12.2 がインストールできます。
EPEL リポジトリの設定ファイル /etc/nginx/nginx.conf
には SSL の設定例がコメントアウトされて記載されているので、これをアンコメントしてそのまま利用します。
Nginx 公式リポジトリ
cat << "_EOF_" > /etc/yum.repos.d/nginx.repo && yum -y install nginx
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
_EOF_
cat << "_EOF_" > /etc/nginx/conf.d/default-ssl.conf
server {
listen 443;
location / {
root /usr/share/nginx/html;
index index.html;
}
ssl on;
ssl_certificate /etc/pki/nginx/server.crt;
ssl_certificate_key /etc/pki/nginx/private/server.key;
}
_EOF_
Nginx 公式リポジトリの設定ファイルには SSL の設定例が記載されていないため、新たに設定ファイルを追加して記述します。
SSL 証明書生成
mkdir -p /etc/pki/nginx/private
make -f /etc/pki/tls/certs/Makefile /etc/pki/nginx/server.crt
openssl rsa -in /etc/pki/nginx/server.key -out /etc/pki/nginx/server.key
mv -v /etc/pki/nginx/{,private/}server.key
openssl
パッケージに含まれる Makefile でテスト証明書が作成できます。
FirewallD
firewall-cmd --add-service=http{,s} --permanent && firewall-cmd --reload && firewall-cmd --list-services
起動と自動起動設定
systemctl start nginx && systemctl enable $_
ブラウザで確認
デベロッパーツールの Network タブで Protocol が h2 になっているのが確認できます。