记录下,使用docker部署nginx+php时遇到的一个坑
问题描述:nginx使用的是官方镜像,php是基于centos7镜像基础上构建的,至于为什么不直接使用官方php镜像?因为还要装一些依赖扩展,比如phalcon框架,是一个需要编译的扩展,还有其他很多东西,构建完之后发现nginx无法访问php的9000端口
docker exec -it my-php-container /bin/sh # 登到php的容器里
telnet 127.0.0.1 9000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
# 貌似没有问题,但是如果换成容器的ip telnet则有问题
# 同样,宿主机或者nginx也是无法访问该端口
telnet 172.19.0.2 9000
telnet: Connect to address 172.19.0.2: Connection refused
解决办法:修改php的php-fpm.d/www.conf
# /etc/php-fpm.d/www.conf
listen = 0.0.0.0:9000
; listen.allowed_clients = 127.0.0.1
将listen的端口有原来127.0.0.1:9000的绑定改成0.0.0.0:9000的绑定
注释 listen.allowed_clients = 127.0.0.1,保持默认值 any
这样 nginx 就可以访问到php-fpm的9000端口了