nginxとphp-fpmの接続がうまく行かなかった件について

ERROR

nginxとphp-fpmの接続がうまく行かなかった件について

nginxとfastcgiでサーバを動かそうとしてたのですが、何故かエラーでちゃんと表示されなかったので覚書。

ふつーにリクエスト送ってみてもbadgateway 502ってエラーが出てました。

原因を探ってみた

さぐってみました。

nginxのaccess.logを見てみる

access.logにはちゃんとリクエストが来てるのが表示されてます・・・

php-fpmのerror.logを見てみる

なーんもログがでてない

なんかこの時点で、nginxとphp-fpmの間に問題がありそうだとわかりますね。

具体的にはnginx.confの書き方でしょうか。

どのプロセスがどのポートをlistenしてるのか

いろいろ試してみましたが、最終的に「ポート番号に間違いがあるやも!」となり、以下コマンド打ってみました。

netstat -antp

ちなみにオプションの意味は下記です

  • -a(all) すべてのソケットを表示
  • -n(numeric) 名前解決を行わず、数字で出力
  • -t(tcp) tcpを表示
  • -p(program) プロセス(プログラム)名を表示

すると以下のように表示されました。

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2427/php-fpm: maste
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1004/nginx: master

nginxはport80を使ってますが、php-fpmはport9000を使っていますね。

nginx.confのfastcgi_passのポート番号書き間違えだった

今回のエラーはphp-fpmがlistenしているのがport9000だったのに対して、

nginx.confの設定がport80をlistenして、fastcgi_pass(php-fpmのlistenホスト・ポート)が127.0.0.1:80となっていたのが問題でした。

fastcgi_pass 127.0.0.1:9000;

上記のように修正してなおった!

コメント

タイトルとURLをコピーしました