nginx と php-fpm との接続を、TCP/IP ではなく、UNIX Socket 接続に変更した。
php-fpm設定 /etc/php/7.0/fpm/pool.d/www.conf
; listen = 127.0.0.1:9000
listen = /run/php/php7.0-fpm.sock
nginx設定 /etc/nginx/sites-available/example.conf
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
$ sudo service php7.0-fpm restart
$ sudo service nginx restart
$ ls -l /run/php/*sock*
srw-rw---- 1 nginx nginx 0 Mar 17 23:49 /run/php/php7.0-fpm.sock
$ netstat -al --protocol=unix |egrep "Proto|fpm"
Proto RefCnt Flags Type State I-Node パス
unix 2 [ ACC ] STREAM LISTENING 58610 /run/php/php7.0-fpm.sock
上手くいかなければ、nginx 再起動でエラーとなるか、ブラウザに「Bad Gateway 502」が表示される。
「/run/php/php7.0-fpm.sock」ではなく、「/var/run/php/php7.0-fpm.sock」と記述しても同じ。
環境
Ubuntu 16.04 LTS (Beta1), Kernel 4.4.5
nginx 1.9, PHP 7.0, MariaDB 10.0, SSL接続(TLS1.2)