Nginx-1.11.11

そろそろtls1.3に対応をよさそうですがありませんな。

Changes with nginx 1.11.11                                       21 Mar 2017

    *) Feature: the "worker_shutdown_timeout" directive.

    *) Feature: vim syntax highlighting scripts improvements.
       Thanks to Wei-Ko Kao.

    *) Bugfix: a segmentation fault might occur in a worker process if the
       $limit_rate variable was set to an empty string.

    *) Bugfix: the "proxy_cache_background_update",
       "fastcgi_cache_background_update", "scgi_cache_background_update",
       and "uwsgi_cache_background_update" directives might work incorrectly
       if the "if" directive was used.

    *) Bugfix: a segmentation fault might occur in a worker process if
       number of large_client_header_buffers in a virtual server was
       different from the one in the default server.

    *) Bugfix: in the mail proxy server.

次のバージョンに期待しましょう。

バージョンアップ完了。

[root@www redadmin]# nginx -v
nginx version: nginx/1.11.11

今日もサイトの移転やらサーバーの構築でいそがしい。

NginxSRPMSでhttp/2とbrotliの有効化

とあるサイトをみてみるとCentOSのopensslが1.0.1だからh2を諦めたとか、

コードからだと面倒とか敷居が高いという記事を読みました。

rpmファイルで簡単にhttp/2とbrotliを有効化させる方法を書きます。

まずopensslのダウンロード

# cd /usr/local/src
# wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
# tar zxvf openssl-1.1.0e.tar.gz

次はngx_brotliモジュールの設置

# git clone https://github.com/google/ngx_brotli.git
# cd /usr/local/src/ngx_brotli && git submodule update --init

そしてsrpmファイルをインストール

# rpm -ivh http://nginx.org/packages/centos/7/SRPMS/nginx-1.10.3-1.el7.ngx.src.rpm
# cd /root/rpmbuild/SPECS
# vi nginx.spec

--with-openssl=/usr/local/src/openssl-1.1.0e --add-module=/usr/local/src/ngx_brotliを下記に追加保存

%define BASE_CONFIGURE_ARGS $(echo "--prefix=%{_sysconfdir}/nginx --sbin-path=%{_sbindir}/nginx --modules-path=%{_libdir}/nginx/modules --conf-path=%{_sysconfdir}/nginx/nginx.conf --error-log-path=%{_localstatedir}/log/nginx/error.log --http-log-path=%{_localstatedir}/log/nginx/access.log --pid-path=%{_localstatedir}/run/nginx.pid --lock-path=%{_localstatedir}/run/nginx.lock --http-client-body-temp-path=%{_localstatedir}/cache/nginx/client_temp --http-proxy-temp-path=%{_localstatedir}/cache/nginx/proxy_temp --http-fastcgi-temp-path=%{_localstatedir}/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=%{_localstatedir}/cache/nginx/uwsgi_temp --http-scgi-temp-path=%{_localstatedir}/cache/nginx/scgi_temp --user=%{nginx_user} --group=%{nginx_group} --with-file-aio --with-threads --with-ipv6 --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.1.0e --add-module=/usr/local/src/ngx_brotli --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module")

rpmファイルの作成

# rpmbuild -ba nginx.spec

# cd rpmbuild/RPMS/x86_64/
[root@www x86_64]# ll
合計 6684
-rw-r--r-- 1 root root 3710452  3月 20 18:08 nginx-1.10.3-1.el7.centos.ngx.x86_64.rpm
-rw-r--r-- 1 root root 3132220  3月 20 18:08 nginx-debuginfo-1.10.3-1.el7.centos.ngx.x86_64.rpm

# rpm -ivh nginx-1.10.3-1.el7.centos.ngx.x86_64.rpm

# vi /etc/nginx/nginx.conf

httpブロックに

brotli on;

そして確認。

[root@www x86_64]# curl -H "Accept-Encoding: br" -I http://127.0.0.1/index.html
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Mon, 20 Mar 2017 09:19:36 GMT
Content-Type: text/html
Last-Modified: Mon, 20 Mar 2017 09:08:41 GMT
Connection: keep-alive
ETag: W/"58cf9c19-264"
Content-Encoding: br

参考サイト

https://github.com/google/ngx_brotli

とまぁやってみましたが、これらの技術はブラウザ側も対応してる必要がありますしhttpsのみ有効です。残念ながら、googleのbotはh2にもbrotliには対応しておりませんが、貴方のサイトを高速かさせる強力なツールになります。

会社のサーバーも実装完了しました。httpからhttpsの移行が流行っています。

実装してさらにその先をいってみませんか?

もうこの程度サーバーで

今回のサーバー死亡でもう俺に甘えはなくなった。

最低限なサーバーをつくること決意。

検証用兼馬鹿譲渡専用サーバーを作った。

サーバーの構成はすべてCentOSオリジナルパッケージのみ。epelもなし!!

[root@www ~]# yum -y update
読み込んだプラグイン:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* updates: ftp.riken.jp
No packages marked for update

もちろんパッケージなんでバージョンは古いが、セキュリティは万全である。

yum-cronで一時間に一回セキュリティのバージョンアップチェックしてバージョンアップしてくれる。しかし、奴は動けばいいくらいの考えなんでサーバーのスペックやapacheやphpのバージョンはきにしない。

これで十分だろう。

よしこの設定でいこう!!

phpは下記バージョンである。

[root@www ~]# rpm -qa |grep php
php-common-5.4.16-42.el7.x86_64
php-gd-5.4.16-42.el7.x86_64
php-xml-5.4.16-42.el7.x86_64
php-cli-5.4.16-42.el7.x86_64
php-mysqlnd-5.4.16-42.el7.x86_64
php-mbstring-5.4.16-42.el7.x86_64
php-pdo-5.4.16-42.el7.x86_64
php-5.4.16-42.el7.x86_64

5.4.16なんですね。

5.4.4だとばっかりおもっていたw

後は再起動大好きなんでwebminからやり方おしえてさようならだな。

おまけ、