Closed1
recv() failed (104: Connection reset by peer) while reading response header from upstream
nginx
+ php-fpm
の構成を、docker-compose で別サービスに分けて作ろうとするとよくハマるやつ
nginx_1 | 172.27.0.1 - - [19/Sep/2022:04:19:32 +0000] "GET / HTTP/1.1" 502 157 "-" "curl/7.79.1" "-"
nginx_1 | 2022/09/19 04:19:32 [error] 8#8: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 172.27.0.1, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://172.27.0.4:9000", host: "localhost"
www.conf
(pool) の以下の設定を訝しみましょう。
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
公式ドキュメントを読む。
listen
string
FastCGI リクエストを受け入れるアドレス。 'ip.add.re.ss:port', 'port', '/path/to/unix/socket' 形式の構文が使えます。 このオプションは、各プール単位で必須となります。
listen.allowed_clients
string
接続を許可されている FastCGI クライアントの IPv4 または IPv6 アドレス一覧。オリジナル版 PHP FastCGI (5.2.2+) における環境変数 FCGI_WEB_SERVER_ADDRS と同じです。 tcp でリスンするソケットに対してのみ意味をなします。 書くアドレスはカンマ区切りで指定します。この値を空にしておくと、任意の ip アドレスからの接続を許可します。 デフォルト値: 任意の ip アドレスを許可。
サービスを分けると使用ネットワークの Subnet 内の IP が設定されるため、
$ docker-compose ps -q php | xargs docker inspect | jq '.[].NetworkSettings.Networks[].IPAddress'
"172.28.0.3"
$ docker network inspect bridge | jq '.[].IPAM.Config'
[
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
以下のようにしないと Connection reset by peer
されちゃう。
listen = 9000 ; or listen = 0.0.0.0:9000
;listen.allowed_clients = 127.0.0.1
おまけ
$ docker-compose exec php cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
$ docker-compose exec php yum provides netstat
Loaded plugins: ovl, priorities
286 packages excluded due to repository priority protections
net-tools-2.0-0.22.20131004git.amzn2.x86_64 : Basic networking tools
Repo : amzn2-core
Matched from:
Filename : /bin/netstat
net-tools-2.0-0.22.20131004git.amzn2.0.2.x86_64 : Basic networking tools
Repo : amzn2-core
Matched from:
Filename : /bin/netstat
net-tools-2.0-0.22.20131004git.amzn2.0.2.x86_64 : Basic networking tools
Repo : @amzn2-core
Matched from:
Filename : /bin/netstat
net-tools-2.0-0.22.20131004git.amzn2.0.2.x86_64 : Basic networking tools
Repo : @amzn2-core
Matched from:
Filename : /usr/bin/netstat
$ docker-compose exec php bash -c 'yum install -y net-tools && netstat -na | grep 9000'
...
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN
このスクラップは2022/09/19にクローズされました