HTTP/2対応nginxのrpmパッケージ作成とインストール

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。kenjiです。

先日CentOS7.3をインストールしたので、その上でHTTP/2が動作する環境を作っていきます
HTTP/2とはなんぞや、という方はwikipediaのこちらのリンク先へ、どうぞ

過去にも弊社blogでもHTTP/2を扱ったのですが、
GoogeChrome 51以降ではNPNなHTTP/2は利用できなくなりました。そのためALPN対応の方法を記載します。

概要

nginxのrpm作成とインストール

実行環境

CentOS 7.3

インストール方法

yumリポジトリからnginxをインストールすることもできますが、
CentOSのopensslの標準バージョンが1.0.1系となっており、HTTP/2では1.0.2が必要となります。
そのためopenssl1.0.2をincludeしたrpmをrpmbuildから作成します。

執筆時のそれぞれの最新安定バージョンは
 nginx-1.10.2
 openssl-1.0.2j
となります。
本記事を参考にする場合、脆弱性の観点もありますので最新のバージョンを利用するようにお願いします

環境準備

rpmbuildにあたり、rpmbuildの推奨設定である専用ユーザを作成します。
(既に作成済みの場合本手順は不要です)

ソース用意

nginxのsrcパッケージとopenssl1.0.2を用意します

spec修正

次にspecファイルを更新します。
ソースインストールですとconfigureの更新に相当する作業になります

今回は将来的に利用する可能性のある、
geoip_module
も追加で入れます。
こちらのモジュールはアクセス元のユーザの地域を(おおざっぱですが)ログに記録することができるものになります
GeoIPのリストはCentOS7.3標準で提供されているものを利用します。

また上の方でも書いていますが、openssl1.0.2を内包してビルドします。
変更前後のdiff -uを記載します

rpmbuild

rpmbuildします

モジュールが不足する場合はyumなどで補ってください

yumにてインストール

問題がなければ
/home/rpmbuilder/rpmbuild/RPMS/x86_64/nginx-1.10.2-1.el7.centos.ngx.x86_64.rpm
にrpmができます

以下root権限にて実施

rpmではなくyumにてインストールする理由は
・依存モジュールの追加インストールが簡単
・削除する際にyum removeで簡単に削除

動作確認

nginx OpenSSL1.0.2同梱版がインストールできました

まとめ

HTTP/2のほうが将来的にSEO有利になると思われますし、
画像が多いECサイトやblogなどではHTTP/2を有効にすることで並列転送が可能となりコンテンツの表示速度が早くなります。

ページの表示速度を気にされる場合は是非検討を

次回は本環境でphp-fpmを設定してみます

投稿者プロフィール

kenji
2013年入社の平成生まれです。

初めて触ったコンピュータはPC9821でダイヤルアップでした。
その時に鯖落ちや人大杉の対応をしてくださる鯖缶になりたいと憧れ、
みなさんのお役に立てればと思っております!
#今では個人所有のパソコン・サーバだけで20台ほどあります…。

サーバー大好き!

ABOUTこの記事をかいた人

2013年入社の平成生まれです。 初めて触ったコンピュータはPC9821でダイヤルアップでした。 その時に鯖落ちや人大杉の対応をしてくださる鯖缶になりたいと憧れ、 みなさんのお役に立てればと思っております! #今では個人所有のパソコン・サーバだけで20台ほどあります…。 サーバー大好き!