当前位置: 首页 > 知识库问答 >
问题:

Nginx-proxy docker从php-fpm docker接收stderr输出(导致502个错误)

华季同
2023-03-14

我有一个(相当标准的)设置,其中nginx-proxy提供静态文件,并将php请求发送到php-fpm Docker。合成文件的简化版本:

services:
  php:
    image: php:7-fpm-alpine
    volumes:
      - ./my-src:/var/www
  web:
    image: nginx:alpine
    volumes:
      - ./my-src:/var/www
    ports:
      - "80:80"
NOTICE: PHP message: [info] Matched route "game_index".
NOTICE: PHP message: [debug] Checking for authenticator support.
NOTICE: PHP message: [debug] Checking support on authenticator.
[...]
NOTICE: PHP message: [debug] Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelFinishRequest".
NOTICE: PHP message: [debug] Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate".
172.18.0.2 -  03/Feb/2021:20:20:20 +0000 "GET /index.php" 200
2021/02/03 20:20:20 [error] 7#7: *8 FastCGI sent in stderr: "PHP message: [info] Matched route "game_index".
PHP message: [debug] Checking for authenticator support.
PHP message: [debug] Checking support on authenticator.
[...]
PHP message: [debug] Notified event "kernel.finish_request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelFinishRequest".
PHP message: [debug] Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelFinishRequest"" while reading response header from upstream, client: 172.18.0.1, server: , request: "GET /game/ HTTP/1.1", upstream: "fastcgi://172.18.0.3:9000", host: "localhost"
172.18.0.1 - - [03/Feb/2021:20:20:20 +0000] "GET /game/ HTTP/1.1" 200 437 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0" "-"

如果我调整/usr/local/etc/php-fpm.d/docker.conf中的设置,使error_log和access.log不是按照默认指向/proc/self/fd/2,而是指向/dev/null,php docker将保持沉默,但是nginx docker仍然返回错误。

如果我按照这里的建议将文件指向/proc/self/fd/2,那么两个日志都会像以前一样被填充。

如何确保php docker中的日志保持不变,但stderr没有发送到Nginx?

[编辑]根据Ilia Yatsenko的评论,我在DockerFile中添加了以下内容:

RUN cp "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
RUN echo 'fastcgi.logging=0' >> "$PHP_INI_DIR/php.ini"

共有1个答案

宁侯林
2023-03-14

我已经有一段时间没有在Docker设置中配置alpine php-fpm了,但是如果我没有记错的话,我必须对默认的php-fpm.conf进行一些重写。

这是我在类似的设置中所拥有的...在构建映像时,配置被复制到/etc/php7/php-fpm.conf

[www]
listen = 127.0.0.1:9000
clear_env = no

; if we send this to /proc/self/fd/1, it never appears
access.log = /dev/stdout

; Ensure worker stdout and stderr are sent to the main error log.
catch_workers_output = yes
decorate_workers_output = no

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

[global]
error_log = /dev/stdout
 类似资料:
  • 本文向大家介绍Opcache导致php-fpm崩溃nginx返回502,包括了Opcache导致php-fpm崩溃nginx返回502的使用技巧和注意事项,需要的朋友参考一下 我这个博客为了提高运行效率在vps上装了opcache扩展,结果发现有个页面返回502,其他页面正常。 检查了php-fpm日志,发现是php-fpm子进程不知道为什么会崩溃,然后把opcache关了就正常。中间折腾的过程就

  • 我有一个基于php和nginx图像的web应用程序...一切都很好,直到我在PHP配置下设置了一个命令: docker撰写。yml 这是我的默认。形态 这是我的supervisord.conf nginx日志显示我: nginx|u 1 | 2018/10/02 00:42:36[错误]11#11:1 connect()在连接到上游时失败(111:连接被拒绝),客户端:172.23。0.1,服务器

  • 我在主题上有些错误。服务器负载不高:~15%的CPU,有几Gb的内存,硬盘没有内置。但错误502在大约3%的情况下抛出。 程序:Debian 6,nginx/0.7.62,php5-fpm(5.3.3-1)。 在nginx的error.log是这个错误: php5 fpm的状态通常如下: 我认为,这意味着负载不高。 我在sysctl-net中增加了backlog参数。果心somaxconn=500

  • 我有一个问题,随机502网关错误使用nginx和php-fpm。在我的案例中,我发现了一个场景,其中各种php.inierror_log设置和error_reporting级别导致随机502网关错误出现。 通过改变php。ini设置错误报告和错误日志我能够使502网关错误消失,但更重要的是,我能够看到日志中真正的php错误并修复它们。 主要的问题是,如果“error\u reporting设置为d

  • rank ▲ ✰ vote url 66 357 52 148 url 输出到stderr 我知道至少三种方法这么做: import sys sys.stderr.write('spam\n') print >> sys.stderr, 'spam' from __future__ import print_function print('spam', file=sys.stderr)

  • 我用Ired邮件和两个网站成功地运行了Ubuntu服务器20.04,其中一个是WordPress。 我想安装Nextcloud,为此我必须重新安装php fpm以生成php7。4-fpm。短袜在这之后,Nextcloud工作了,但是我的其他网站停止了工作,出现了错误“502坏网关”。 所以至少可以说,我很困惑! 我根据本文安装了Nextcloud并设置了启用的站点。符合说明的conf文件:http