我在某些 GET 请求上遇到由于 502 错误网关错误而导致的超时。
我尝试将这些行添加到我的 nginx 站点配置文件中:
server {
client_max_body_size 500M;
client_header_timeout 3000;
client_body_timeout 3000;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 3000;
fastcgi_send_timeout 3000;
fastcgi_connect_timeout 3000;
fastcgi_buffers 128 256k;
fastcgi_buffer_size 256k;
}
}
我还尝试通过以下方式调整缓冲区大小:
fastcgi_buffers 256 512k;
fastcgi_buffer_size 512k;
fastcgi_buffers 64 128k;
fastcgi_buffer_size 128k;
fastcgi_buffers 32 64k;
fastcgi_buffer_size 64k;
我还尝试将 PHP-FPM 配置值更改为这些:
max_execution_time = 3000
max_input_time = -1
memory_limit = 2048M
post_max_size = 500M
upload_max_filesize = 500M
opcache.memory_consumption = 1024
我也尝试禁用 OPCache。
到目前为止,这些都无法缓解 502 错误。根据 Chrome 开发工具,有时超时时间为 1 分钟,有时为 1.2 分钟。我无法解释超时的变化。
当我检查特定于站点的 nginx 错误日志时,我发现每次尝试访问 URL 时都会生成此错误:
[error] 20675#20675: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 172.72.213.137, server: example.com, request: "GET /data/123 HTTP/2.0", upstream: "fastcgi://unix:/var/run/php/php7.1-fpm.sock:", host: "example.com"
我是否遗漏了一些关键设置?
PHP 7.1
nginx 1.13.3