概要
- docker で nginx と php-fpm を別々のDockerコンテナで構築する際
nginx => 9000Port => php-fpm
でどうしてもアクセスできなかった - 9000Port はhttpプロトコルではなくfastcgiなプロトコルなので確認しづらい
- cgi-fcgi コマンドを利用することで、レスポンスが返却されるか確認出る
install
CentOS
yum --enablerepo=epel install fcgi
ubuntu(未確認)
apt-get install libfcgi0ldbl
接続テスト
- 確認用スクリプトの設置
echo "<?php phpinfo(); ?>" >> /var/www/html/index.php
- リクエスト
SCRIPT_NAME=index.php \
SCRIPT_FILENAME=/var/www/html/index.php \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect 127.0.0.1:9000
- レスポンスが返却されれば成功!
X-Powered-By: PHP/7.2.10
Content-type: text/html; charset=UTF-8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<style type="text/css">
/*以下略*/
その他
コマンドHELP
- UNIX domain socket も対応していそうです。
[root@ee1633ae5f0c /]# cgi-fcgi --help
Unknown option --help
Missing application pathname
Missing -connect <connName>
Usage:
cgi-fcgi -f <cmdPath> , or
cgi-fcgi -connect <connName> <appPath> [<nServers>] , or
cgi-fcgi -start -connect <connName> <appPath> [<nServers>] , or
cgi-fcgi -bind -connect <connName> ,
where <connName> is either the pathname of a UNIX domain socket
or (if -bind is given) a hostName:portNumber specification
or (if -start is given) a :portNumber specification (uses local host).
参考