我有一个Docker设置,包含一个php-fpm容器,一个节点容器和一个用作代理的nginx容器。现在在浏览器(http://project.dev)中,php容器响应json,就像我期望的那样。都好。但是,当我从节点容器向此php容器(view code)发出请求时,我在请求中收到错误:ECONNRESET
。显然,节点容器无法与php容器通信。 nginx错误似乎没有添加条目。
Error: read ECONNRESET at _errnoException(util.js: 1031: 13) at TCP.onread(net.js: 619: 25)
errno: 'ECONNRESET',
code: 'ECONNRESET',
syscall: 'read'
有什么想法吗?
我做了一个github回购:https://github.com/thomastilkema/docker-nginx-php-fpm-node
docker-compose.yml (view file)
的修剪版本nginx:
depends_on:
- php-fpm
- node
networks:
- app
ports:
- 80:80
php-fpm:
networks:
- app
node:
networks:
- app
networks:
app:
driver: overlay
的修剪版本
http {
upstream php-fpm {
server php-fpm:9000;
}
upstream node {
server node:4000;
}
server {
listen 80 reuseport;
server_name api.project.dev;
location ~ \.php$ {
fastcgi_pass php-fpm;
...
}
}
server {
listen 80;
server_name project.dev;
location / {
proxy_pass http://node;
}
}
}
php-fpm/Dockerfile (view file)
FROM php:7.1-fpm-alpine
WORKDIR /var/www
EXPOSE 9000
CMD ["php-fpm"]
提出错误的请求
const response = await axios.get('http://php-fpm:9000');
如何重现
192.168.99.100
):docker-machine ip manager
或docker-machine ls
。通过添加sudo vi /private/etc/hosts
和192.168.99.100 project.dev
192.168.99.100 api.project.dev
)
git clone https://github.com/thomastilkema/docker-nginx-php-fpm-node project
cd project ./scripts/up.sh
docker logs <container-id> -f
答案 0 :(得分:0)
ECONNRESET
是关闭连接的另一端,通常可归因于协议错误。
FastCGI流程管理器(FPM)使用FastCGI协议传输数据。
通过nginx容器,将HTTP请求转换为FastCGI
axios.get('http://nginx/whatever.php')