nginx 管理员- php-fpm导致502坏网关

nlejzf6q  于 2023-03-01  发布在  Nginx
关注(0)|答案(2)|浏览(153)

我有一个基于php和nginx图像的Web应用程序......一切都运行得很好,直到我在PHP配置下设置了一个命令:command: /usr/bin/supervisord -c /symfony/supervisord.conf
docker-compose.yml

version: '2'

services:
    php:
        build: docker/php
        tty: true
        volumes:
            - '.:/symfony'
        command: /usr/bin/supervisord -c /symfony/supervisord.conf

    nginx:
         image: nginx:1.11
         tty: true
         volumes:
             - './public/:/symfony'
             - './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf'
         ports:
             - '80:80'
         links:
             - php

这是我的默认. conf

server {
 server_name ~.*;

 location / {
     root /symfony;

     try_files $uri /index.php$is_args$args;
 }

 location ~ ^/index\.php(/|$) {
     client_max_body_size 50m;

     fastcgi_pass php:9000;
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME /symfony/public/index.php;
 }

 error_log /var/log/nginx/error.log;
 access_log /var/log/nginx/access.log;
}

这是我的上级配置文件

[unix_http_server]
file=/tmp/supervisor.sock

[supervisord]
logfile=/tmp/supervisord.log
pidfile=/var/run/supervisord.pid
nodaemon=true

Nginx日志显示:
nginx_1|2018年10月2日00:42:36 [错误] 11#11:* 1个连接()失败(111:连接被拒绝),客户端:www.example.com,服务器:~. *,请求:172.23.0.1"快速目录名称://172. 23. 0. 2:9000",主机:"示例网站" "fastcgi://172.23.0.2:9000", host: "127.0.0.1"
正如我们所看到的,nginx报告了一个502 Bad Gateway错误。如果我删除最后一行CMD,一切都正常。如果我删除该行并通过docker-compose exec php bash访问,然后手动启动命令,一切都正常。
知道为什么添加该命令会导致502坏网关吗?

mfuanj7w

mfuanj7w1#

好的,我找到了一个解决方案,这是管理程序的问题。因为每次我们启动服务管理程序时,php-fpm service都会自动停止,这就是为什么它应该添加一个重新启动php-fpm的配置,但这次是从管理程序配置中。

[program:php-fpm]
command = /usr/local/sbin/php-fpm
autostart=true
autorestart=true
zu0ti5jz

zu0ti5jz2#

对于有类似问题的其他人:
不要忘记docker-compose.yml文件中的command覆盖了Dockerfile中的默认CMD,因此该命令不会运行。例如,如果php:7.4-fpm的最终命令是CMD php-fpm,则该命令不会运行。
因此,如果您有一些自定义逻辑用于在container运行后运行,请不要忘记将其包含在command中,例如:

command: bash -c "php-fpm & npm run dev"

相关问题