FastCGI入門したい

php-fpmを使いこなせなければnginxでphpが使えないので頑張りたいと思って色々ググっては読んで見たけれど、なるほど?わからん?状態から進めず…
FastCGIはビルトインサーバの何か速い版?と思ってたのだけど、php-fpmってどこからphpのスクリプトを読んで実行するんだろうか…php-fpmに入門するよりも前にFastCGIプロトコル入門しなければならないような気がしてきた。
FastCGIは名前くらいは聞いたことのある謎の概念だったけど、昨日php-fpm入門してる最中にtwitterでつぶやいたらぶていさん*1にFastCGIプロトコルはHTTPみたいなテキストプロトコルでは無い*2と教えてもらたのでFastCGIはプロトコルだと知ったのだった。

入門できませんでしたorz

とりあえずFastCGIから学ばねばわからないなーと思ってググってみたけど、FastCGIについてよくわからないし、nginxのfastcgi_param SCRIPT_FILENAME みたいなのを見るとhttpサーバがurlをファイルのパスに変換してphp-fpmに渡して、php-fpmはそれを実行してhttpサーバに渡すのかな?とか思える感じだったので、とりあえずnginxとphp-fpmを連携させてみて動く様になってからphp-fpmを詳しくやっていこうと思った

リクエストのあったURLを見て挙動を変える

nginxからphp-fpmを呼び出すにはどのURLが呼ばれたときにphp-fpmを呼び出すのかという事を設定しないといけない。どのURLが呼ばれた時に〜するというのはlocationを使う
http://nginx.org/en/docs/http/ngx_http_core_module.html#location
server と location の中に書く事が出来る…locationは入れ子に出来るということか

locationにはprefix string*3か正規表現が指定出来る

とりあえずhttp://サーバ/hogehoge.phpを動かす

location /hogehoge.php {
  proxy_pass http://127.0.0.1:9001
}

とりあえず↑の設定をしてみた。proxy_pass*4を設定した。
proxy_passを設定しているのはとりあえず理屈からわかりそうな奴を設定してlocationの使い方が正しいかチェックする為だ*5

nginx -s reload 

してから、別のコンソールを開いて

php -S localhost:9001 -t /home/www

を実行してブラウザでアクセスするとphpを実行しているコンソールに

[Thu Jul  6 22:57:54 2017] 192.168.1.71:35385 [200]: /hogehoge.php

と表示されたし、ブラウザの方もphpの正しい実行結果が表示された。
このlocationコンテキストの中にphp-fpmを呼び出す設定をすれば良さそうだ。