6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

nginxでhttp2を試してみる

Last updated at Posted at 2015-12-11

Geek Woman の Advent Calendar 12日目としてこの記事を書いています。
ほそぼそと情報収集を去年(2014/夏)くらいからしていたのですが、RFCも決まり、
そろそろサービスにも使いたい!と思い、具体的に検証しようと思ったのがこちらを書くきっかけです。
nginxでhttp2を試してみます。
http/2は色々な方が書かれているので、幾つか試してみて、安定性、運用のし易さ、メンテナンス間隔
で選ぼうと思います。後にh2o,nghttp2について検証した内容も書く予定でいます。
環境:MacOS 10.11
vagrant 1.7.4
vagrantでCentOS7.1を用意する。
CentOS7.1

#vagrant box add centos7.1            https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box
#vagrant init centos7.1

vagrantfileを編集

config.vm.define :wb01 do |wb01|
  wb01.vm.box = "centos7.1"
  wb01.vm.hostname = "wb01"
  wb01.vm.network :private_network, ip: "192.168.22.40"
end

#vagrant up

nginxは1.9.5からhttp2をサポートしています。
https://www.nginx.com/blog/nginx-1-9-5/#gs.BUI5Z3Q

今回はソースで現在最新の1.9.7を以下の場所から取得します。
デフォルトでは入らないとあるので、--with-http_v2_moduleをオプションで付けます。

#wget http://nginx.org/download/nginx-1.9.7.tar.gz
#tar zxvf nginx-1.9.7.tar.gz
#cd nginx-1.9.7
#./configure --with-http_ssl_module --with-http_v2_module --with-debug --without-http_rewrite_module
#make
#make install

サービスの登録をします。

#cd /usr/lib/systemd/system/
#touch nginx.service
#vi nginx.service

内容は公式にfedora対応であります。こちらを環境に合わせて書き直します。
公式:https://www.nginx.com/resources/wiki/start/topics/examples/systemd/

nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

http/2対応で自己証明書を作成します。
#openssl genrsa 2048 > server.key
#openssl req -new -key server.key > server.csr
#openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt

http2対応
/usr/local/nginx/conf/nginx.confに以下追記します。

nginx.conf
server {
    listen       443 ssl http2;
    server_name  localhost;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

リンクを貼り、サービスを登録します。
#ln -s /usr/lib/systemd/system/nginx.service /etc/systemd/system/multi-user.target.wants/nginx.service
#systemctl enable nginx

公文チェックをして起動します。
#/usr/local/nginx/sbin/nginx -t
#systemctl start nginx

動いていることを確認します。
#ps ax |grep nginx
969 ? Ss 0:00 nginx: master process /usr/local/nginx/sbin/nginx
973 ? S 0:00 nginx: worker process
3573 pts/0 S+ 0:00 grep --color=auto nginx

ブラウザからHTTP/2 and SPDY indicatorを使ってhttp/2が有効か確認します。
chromeブラウザを使っています。
上のvagrantファイルで設定した、IPでアクセスします。
最初は自己証明書なので、安全でない接続と出ますが、そのまま進みます。
スクリーンショット 2015-12-12 0.04.10.png

インジケータが青くなってhttp/2が有効なことが確認できました!
簡単な設定で有効にできるので、使っていきたいと思います。

6
6
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
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?