[Nginx] php-fpm でPHPを動作させる仕組み
Nginx をインストール後に、php-fpm をインストールしたタイミングで、下記のような PHP 用の設定ファイルが存在しています。
nginx.conf
+ conf.d
| + php-fpm.conf
+ default.d
+ php.conf
php-fpm.conf では php-fpm に接続するための情報が記述されています
# PHP-FPM FastCGI server
# network or unix domain socket configuration
upstream php-fpm {
server unix:/run/php-fpm/www.sock;
}
php.conf では、拡張子が php もしくは phar であった場合に、php-fpm 経由で動作させるような設定が記述されています。fastcgi_pass php-fpm にて前述の設定(upstream php-fpm)を読み込んでいます。
# pass the PHP scripts to FastCGI server
#
# See conf.d/php-fpm.conf for socket configuration
#
index index.php index.html index.htm;
location ~ \.(php|phar)(/.*)?$ {
fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php-fpm;
}
Nginx は、conf.d のファイルを読み込んでいるため、php-fpm.conf は反映されている状態です
include /etc/nginx/conf.d/*.conf;
すべての設定に反映して良い場合は、conf.d のディレクトリに php.conf をコピーすることで反映できます
nginx.conf
+ conf.d
| + php-fpm.conf
| + php.conf <= ここにphp.confを配置する
+ default.d
server の設定単位で読み込ませることもできます。ドメインごとに設定を変えたい場合は、こちらが便利です。
server {
listen 80; # ipv4のポート番号
listen [::]:80; # ipv6のポート番号
server_name hoge1.apiless.com; # ドメイン名
root /var/www/hoge1; # ドキュメントルートのパス
# これでPHPを動作させる
include /etc/nginx/default.d/php.conf;
}