我正在使用PHP和Apache,结合nginx反向代理,在Docker上运行。我有几个长时间运行的调用在60秒后出现超时,导致504网关超时错误。我知道我的应用程序已经成功调用,因为我正在记录我的PHP应用程序的日志,并且可以看到它正在积极地写入日志。每一次都是60秒的超时,但我似乎无法找到该设置所在的位置。
我尝试了this post中的建议,但没有起作用。我已更新了我的php.ini文件中的一些与时间相关的设置,并验证了它们已被phpinfo设置。
我还将内存限制增加到512,但考虑到每次都会在大约60秒后超时,所以我不认为这是问题所在。
至于更新nginx设置,我最初遵循了这个教程来调整nginx代理超时时间,但那并没有起作用。我撤销了更改,然后通过ssh进入容器并手动更新了/etc/nginx/nginx.conf文件,下面是http部分的内容。
我尝试了this post中的建议,但没有起作用。我已更新了我的php.ini文件中的一些与时间相关的设置,并验证了它们已被phpinfo设置。
max_input_time = 0
max_execution_time = 500
我还将内存限制增加到512,但考虑到每次都会在大约60秒后超时,所以我不认为这是问题所在。
至于更新nginx设置,我最初遵循了这个教程来调整nginx代理超时时间,但那并没有起作用。我撤销了更改,然后通过ssh进入容器并手动更新了/etc/nginx/nginx.conf文件,下面是http部分的内容。
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 500;
proxy_connect_timeout 600;
proxy_send_timeout 600;
send_timeout 600;
client_max_body_size 5000;
client_header_timeout 600;
client_body_timeout 600;
fastcgi_read_timeout 300;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
在更新nginx.conf文件后,我确保运行nginx -s reload
。我不确定还有哪里需要查看,因为我已经做了几乎所有相关的事情。还有什么原因会导致nginx在60秒后超时?谢谢。
这是我的PHP dockerfile:
FROM php:7.2-fpm-alpine3.7
RUN apk update; \
apk upgrade;
RUN docker-php-ext-install pdo_mysql
RUN apk add --no-cache php7-pear php7-dev gcc musl-dev make
RUN pecl install xdebug
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis