nginx入門6日目

nginx で php-fpm を動かすぞ

前回のあらすじ

location コンテキストに fastcgi_pass を設定すれば動くのでは無いだろうかという想定の元、設定を行いブラウザでアクセスしたら画面は真っ白特にエラーログも出ていないという状況でlocationの書き方が悪いのかfastcgi_passの設定内容が足りないのかphp-fpmがおかしいのかがわからないのでとりあえずproxy_passを設定してphp -S して起動したビルトインサーバに想定してたphpスクリプトが渡ったのを確認し、どうやらlocationはおかしく無さそうだという所まで確認したのでした…

ドキュメント読もう

公式ドキュメント読んだら即解決ですよ
http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#example

というわけでnginx と php-fpmを連携させる為に必要最低限必要な設定はこちら*1

    location /hogehoge.php {
       fastcgi_pass  localhost:9000;
       fastcgi_param SCRIPT_FILENAME /phpスクリプトを置くディレクトリ/$fastcgi_script_name;
       fastcgi_param QUERY_STRING $query_string;
       fastcgi_param REQUEST_METHOD  $request_method;
   }

この設定が書いてあれば最低限phpスクリプトの実行結果がブラウザに送られてくるのだけど、これより

  location /hogehoge.php {
       include /nginxの設定ファイル置き場/fastcgi_params;
       fastcgi_pass  localhost:9000;
       fastcgi_param SCRIPT_FILENAME /home/www/$fastcgi_script_name;
   }

とすると/fastcgi_paramsにfastcgi_paramに最低限設定した方が良さそうで環境によって変更が無い様な項目が書かれているので設定しないといけない行数が減りそう

$fastcgi_script_name とは?

設定ファイルに急に沸いた変数的な奴が気持ち悪いので調べる事に。
http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#variables
ngx_http_fastcgi_moduleの組み込み変数という事らしい。

さっきのfastcgi_paramsの中身を見たら同じような組み込み変数の様な物がたくさん設定してあったけど全部coreモジュールの組み込み変数らしい。
http://nginx.org/en/docs/http/ngx_http_core_module.html#variables

ちゃんとphpが動く様になったけど、今は/hogehoge.php専用なので次はlocationをちゃんと設定する