LoginSignup
10
8

More than 5 years have passed since last update.

nginx 1.9.5 + ngx_pagespeed on Ubuntu 14.04 の導入とHTTP/2の設定

Posted at

About

Ubuntu 14.04 の環境に、nginx + ngx_pagespeed な環境を構築した時の作業メモです。

先日、nginxのMainline版である1.9.5がリリースされましたが、HTTP/2対応が取り込まれたということで、これを機に自鯖(今はSPDY)をHTTP/2デビューさせます!

ちなみに、バックエンドで動かしているphp-fpm(FastCGI)はHTTP/2を喋らないぞ???、と心配になりましたが、結論としては心配無用でした。

公式の解説によると、NginxはHTTP/2のGatewayとして機能し、バックエンドとはHTTP/1.1に変換して喋るようになっているようです。

NGINX acts as an “HTTP/2 gateway” to ease the transition to the new protocol. On the front end, NGINX talks HTTP/2 to client web browsers that support it, and on the back end it talks HTTP/1.x (or FastCGI, uwsgi, SCGI) just as before. In between, NGINX translates between HTTP/2 and HTTP/1.x (or FastCGI, etc). This means that servers and applications proxied by NGINX will be unaffected by the move to HTTP/2, and don’t really even need to know that their clients are using HTTP/2.

前提

  • OS: Ubuntu 14.04 LTS
  • 追加モジュール
  • TLSは対応済みとする

なお、追加モジュール無しで純粋にnginxだけ入れるのであれば、Mainline版のapt sourceが用意されているので、apt経由でインストールするのが楽です(参考)が、今回はngx_pagespeedモジュールを導入するので、ソースからコンパイルしてdebパッケージを構築する方法を採用します。

作業ログ

Nginxのソースと依存パッケージを取得する

先ほどaptは使わないと述べましたが、ソースと依存パッケージの取得だけaptを利用します。
/etc/apt/sources.listを編集します。

/etc/apt/sources.list
# nginx mainline
deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx

ソースを取得し、依存パッケージをインストールします。

$ sudo mkdir /opt/nginx
$ cd /opt/nginx
$ sudo apt-get update
$ sudo apt-get build-dep nginx
$ sudo apt-get source nginx
$ ls -1p
nginx-1.9.5/
nginx_1.9.5-1~trusty.debian.tar.gz
nginx_1.9.5-1~trusty.dsc
nginx_1.9.5.orig.tar.gz

今後間違ってapt-get install nginxとしてしまわないようにするため、
/etc/apt/sources.listから先ほど追加した定義を外しておきます。

/etc/apt/sources.list
# nginx mainline
# deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
# deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx

ngx_pagespeedモジュールのソースと依存パッケージを取得する

ngx_pagespeedモジュールの導入に必要な依存パッケージをインストールします。

$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

ngx_pagespeedモジュールのソースを取得します。

$ sudo mkdir -p /opt/ngx_pagespeed
$ sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.9.32.6-beta.zip
$ sudo unzip release-1.9.32.6-beta.zip
$ cd ngx_pagespeed-release-1.9.32.6-beta
$ sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz
$ sudo tar -xzvf 1.9.32.6.tar.gz

Nginxのビルド設定を編集する

Nginxのコンパイル時にngx_pagespeedをモジュールとして追加するように設定します。
/opt/nginx/nginx-1.9.5/debian/rulesを編集して、ngx_pagespeedを追加します。

/opt/nginx/nginx-1.9.5/debian/rules
override_dh_auto_build:
        ...
        --with-ipv6 \
        # 追加
        --add-module=/opt/ngx_pagespeed/ngx_pagespeed-release-1.9.32.6-beta
...

configure_debug:
        ...
        --with-debug \
        # 追加
        --add-module=/opt/ngx_pagespeed/ngx_pagespeed-release-1.9.32.6-beta
...

コンパイル

$ cd /opt/nginx/nginx-1.9.5
$ sudo dpkg-buildpackage -b

コンパイル成功後、/opt/nginxにdebファイルが生成されていることが分かります。
なお、インストールすべきdebファイルはnginx_1.9.5-1~trusty_amd64.debです。

$ cd /opt/nginx
$ ls -1p
nginx-1.9.5/
nginx-dbg_1.9.5-1~trusty_amd64.deb
nginx-debug_1.9.5-1~trusty_amd64.deb
nginx_1.9.5-1~trusty.debian.tar.gz
nginx_1.9.5-1~trusty.dsc
nginx_1.9.5-1~trusty_amd64.changes
nginx_1.9.5-1~trusty_amd64.deb
nginx_1.9.5.orig.tar.gz

インストール

念のため、設定ファイルのバックアップを取った上で、旧バージョンのdebファイルも用意して、すぐに戻せるようにしておきます。

$ cd /opt/nginx
$ sudo service nginx stop
$ sudo dpkg -i nginx_1.9.5-1~trusty_amd64.deb
$ sudo service nginx start

正常に起動できたら、改めてHTTP/2を有効にして、nginxを再起動します。

/etc/nginx/conf.d/default_ssl.conf
server {
    ...
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    ...
}
$ sudo service nginx restart

HTTP/2 and SPDY indicatorなどで、HTTP/2が有効になっているか確認できます。

参考

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8