Nginx报错[emerg] host not found in upstream 'php'问题排查求助
解决Nginx报错「host not found in upstream "php"」的问题
报错含义解释
[emerg] host not found in upstream "php" in /etc/nginx/conf.d/default.conf 这个错误表示:Nginx启动加载配置时,无法解析名为php的上游服务器(即你的PHP-FPM服务),找不到对应的主机地址,导致启动失败。
配置错误分析
你的docker-compose.yaml中,PHP服务的名称是app,但Nginx配置文件里的fastcgi_pass php:9000;指定要连接的服务名为php。在Docker Compose的默认网络环境中,服务名就是容器的DNS别名,Nginx只能通过服务名找到对应的容器,因此两者名称不匹配就会出现这个报错。
两种解决方法
方法1:修改Nginx配置,适配服务名
打开你的Nginx配置文件,将fastcgi_pass的目标服务名改为app:
location ~ \.php$ { fastcgi_pass app:9000; # 把php改成app fastcgi_index index.php; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
方法2:修改docker-compose.yaml,重命名PHP服务
将docker-compose.yaml中的PHP服务名改为php,同时同步修改web服务的volumes_from配置:
services: web: image: nginx:latest ports: - "80:80" volumes: - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf volumes_from: - php # 同步修改为php php: # 将原来的app改为php build: dockerfile: ./php/Dockerfile volumes: - ./app:/app
修改完成后,重新执行docker compose up即可正常启动服务。
内容的提问来源于stack exchange,提问作者Aleks555
相关产品推荐
相关产品推荐

