デフォルトでは、ブラウザでexample.com/index.php
などへアクセスすると、ブラウザが勝手にindex.php
をダウンロードする
index.php
をダウンロードではなく、実行・ページを表示させるには、nginxの設定が必要
location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; }
上記のような設定を
/etc/nginx/conf.d
ディレクトリに置いた
example.com.conf
のようなファイルの中に追記する
location { }
のことをロケーションディレクティブと呼ぶ
location ~ \.php$
のように書くことで、
拡張子が.php
のファイルに対してディレクティブ内のルールが適用される
include fastcgi_params
により、
/etc/nginx/fastcgi_params
のファイルの中身が読み込まれる
fastcgi_param XXX aiueo
のように書くと、
.php
ファイルの中で$_SERVER['XXX']
という変数でaiueo
という値が使用できるようになる
(任意の変数名に、任意の値をセットできる)
fastcgi_pass
に
127.0.0.1:9000;
を設定するとTCP
の通信
unix:/var/run/php-fpm/php-fpm.sock;
を設定するとUNIXドメインソケット
による通信
TCP
は外部との通信にも使えるものだが
UNIXドメインソケット
は内部用の通信
UNIXドメインソケット
のほうが理論上は軽量で高速になるはずだが
メモリーを消費するから低スペックマシンでは使わないほうがいいかも?