Добрый день.
Есть стандартная связка Nginx + php-fpm. Не могу понять странности поведения Nginx: ответ от php-fpm обрезается до некоего незначительного размера и не отдаётся полностью. При том, что сам fpm отрабатывает корректно, никаких ошибок в логах PHP нет. Обрезается даже вывод функции phpinfo().
Размер отдаваемого ответа кратен 16кб: по-началу был 16 или 32, однако после добавления нижеследующих строк в конфигурацию хоста, размер ответа стал ограничиваться 256 или 512кб (от запроса к запросу размер варьируется).
fastcgi_buffer_size 256k;
fastcgi_buffers 256 16k;
Для сравнения положил рядом два файла в 10 мегабайт, заполненные нулл-байтом: file.txt и file.php. Первый отдаётся полностью, второй — обрезается.
Полный листинг конфигурации хоста:
server {
listen 80;
server_name domain.com;
root /var/www/domain.com/www;
error_log /var/www/domain.com/logs/error.log;
charset utf-8;
index index.php;
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_buffer_size 256k;
fastcgi_buffers 256 16k;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
user nobody;
worker_processes 12;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_max_size 1024;
server_names_hash_bucket_size 1024;
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 0;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}