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/
[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に以下追記します。
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でアクセスします。
最初は自己証明書なので、安全でない接続と出ますが、そのまま進みます。
インジケータが青くなってhttp/2が有効なことが確認できました!
簡単な設定で有効にできるので、使っていきたいと思います。