[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;
}

Nginx,PHPNginx,PHP

Posted by kidatti