LINUX.ORG.RU

Обрывается загрузка файлов с nginx|fastcgi|php-fpm

 , , , ,


0

1

Привет ЛОР!

У меня есть сайт с moodle. Хочу перевести его на nginx.

Но возникла проблема, которую я всё не могу преодолеть:

При попытке загрузить файл(через форму для загрузки на сайте), размером больше 1023K, он выдаёт «Ошибка соединения с сервером»(error connecting to the server). И всё, больше никаких ошибок. С apache таких ошибок нет.

Платформа:

Centos 7 x86_64
nginx 1.6.1
php-fpm 5.4.16
postgresql 9.2.7

В /etc/php.ini

post_max_size = 4096M
upload_max_filesize = 4096M
max_file_uploads = 200
max_execution_time = 600
/etc/nginx/nginx.conf
user                                                    nginx;
worker_processes                                        auto;
error_log                                               /var/log/nginx/error.log;
pid                                                     /run/nginx.pid;
events {
        worker_connections                              1024;
}

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;
        index                                           index.html index.htm;
        server
        {
                access_log                              /var/log/nginx/moodle-access.log;
                error_log                               /var/log/nginx/moodle-error.log debug;
                listen                                  80;
                server_name                             moodle.domain.ru;
                location /
                {
                        root                            /var/www/moodle;
                        index                           index.php index.html index.htm;
                        # moodle rewrite rules
                        rewrite                         ^/(.*.php)(/)(.*)$ /$1?file=/$3 last;
                }
                # php parsing
                location ~ \.php$
                {
                        root                            /var/www/moodle;
                        try_files                       $uri =404;
                        include                         fastcgi_params;
                        fastcgi_split_path_info         ^(.+\.php)(/.+)$;
                        fastcgi_pass                    unix:/run/php5-fpm.sock;
                        #fastcgi_pass                    127.0.0.1:9000;
                        fastcgi_index                   index.php;
                        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        #fastcgi_buffer_size             1280k;
                        #fastcgi_buffers 256             40k;
                        #fastcgi_busy_buffers_size       2560k;
                        #fastcgi_temp_file_write_size    2560k;
                }
        }
}

moodle-error.log

★★★★★

30 января 2015 г.
Ответ на: комментарий от Ivan_qrt

Та же беда в moodle

Сразу прошу прощения за ламерский вопрос, просто выбора нет, приходится разбираться самостоятельно. Так вот, у меня на мудл такая же ошибка всплывает. Как настроить ПХП я разобрался, а вот с последней директивой, которая всё решила, есть вопрос: что с ней делать? Если долго расписывать, напиши пожалуйста хотя бы что поискать. Пока я пытаюсь найти, как настраивается nginx через isp-панель. Пока безуспешно.

Borizz
()
Ответ на: Та же беда в moodle от Borizz

Нашёл nginx.conf, всё равно не получается.

Мне удалось найти nginx.conf. Я вставил директиву в текст файла. Сейчас он выглядит так:

... http {

## # Basic Settings ##

client_max_body_size 100m;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

types_hash_max_size 2048;

# server_tokens off; ...

Но нужный файл (размером в 2,2 мб) всё равно не закидывается.

Borizz
()
Ответ на: Нашёл nginx.conf, всё равно не получается. от Borizz
user                            nginx;
worker_processes                1;

error_log                       /var/log/nginx/error.log        notice;
pid                             /run/nginx.pid;
events {
        worker_connections      1024;
}

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;
        keepalive_timeout       65;
        client_max_body_size                                    4096m;
        server {
                listen          80;
                server_name     moodle.domain.ru;
                access_log      /var/log/nginx/mdl.access.log   main;

                location / {
                        root    /var/www/moodle/;
                        index   index.php;
                        rewrite ^/(.*.php)(/)(.*)$ /$1?file=/$3 last;
                }
                # php parsing
                location ~ \.php$
                {
                        root                            /var/www/moodle;
                        try_files                       $uri =404;
                        include                         fastcgi_params;
                        fastcgi_split_path_info         ^(.+\.php)(/.+)$;
                        fastcgi_pass                    unix:/run/php5-fpm.sock;
                        fastcgi_index                   index.php;
                        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        fastcgi_connect_timeout         900;
                        fastcgi_read_timeout            900;
                        fastcgi_send_timeout            900;
                }
        }
}

Обрати внимание на fastcgi_*_timeout, возможно дело в них.

Ivan_qrt ★★★★★
() автор топика
Последнее исправление: Ivan_qrt (всего исправлений: 1)
Ответ на: комментарий от Ivan_qrt

Сначала попробовал добавить в свой файл вот этот код

# php parsing
                location ~ \.php$
                {
                        root                            /var/www/moodle;
                        try_files                       $uri =404;
                        include                         fastcgi_params;
                        fastcgi_split_path_info         ^(.+\.php)(/.+)$;
                        fastcgi_pass                    unix:/run/php5-fpm.sock;
                        fastcgi_index                   index.php;
                        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        fastcgi_connect_timeout         900;
                        fastcgi_read_timeout            900;
                        fastcgi_send_timeout            900;

Сайт стал на порядок быстрее грузиться, но проблема с загрузкой контента не решилась. Потом попробовал даже полностью заменить http-секцию твоей. Результат тот же. В общем, есть ощущение, что дело не в nginx... Зато сайт стал шустрее. ЗА ЭТО ОТДЕЛЬНОЕ СПАСИБО! На всякий случай ниже текст моего nginx.conf с добавлением # php parsing, вдруг я чего-то по неопытности не так сделал или не понимаю, как можно решить проблему...

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	client_max_body_size 100m;
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# Logging Settings
	##

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

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable «msie6»;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# nginx-naxsi config
	##
	# Uncomment it if you installed nginx-naxsi
	##

	#include /etc/nginx/naxsi_core.rules;

	##
	# nginx-passenger config
	##
	# Uncomment it if you installed nginx-passenger
	##
	
	#passenger_root /usr;
	#passenger_ruby /usr/bin/ruby;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
	include /etc/nginx/vhosts/*/*.conf;
	server {
		server_name localhost;
	disable_symlinks if_not_owner;
	listen 80;
	include /etc/nginx/vhosts-includes/*.conf;
	location @fallback {
		error_log /dev/null crit;
		proxy_pass http://127.0.0.1:8080;
		proxy_redirect http://127.0.0.1:8080 /;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_set_header X-Forwarded-Secret X7+9PyF+zCbrhZ1a;
		access_log off ;
		
                # php parsing
                location ~ \.php$
                {
                        root                            /var/www/moodle;
                        try_files                       $uri =404;
                        include                         fastcgi_params;
                        fastcgi_split_path_info         ^(.+\.php)(/.+)$;
                        fastcgi_pass                    unix:/run/php5-fpm.sock;
                        fastcgi_index                   index.php;
                        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        fastcgi_connect_timeout         900;
                        fastcgi_read_timeout            900;
                        fastcgi_send_timeout            900;
                }
        }
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#	# auth_http localhost/auth.php;
#	# pop3_capabilities «TOP» «USER»;
#	# imap_capabilities «IMAP4rev1» «UIDPLUS»;
# 
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
# 
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}

Borizz
()
Ответ на: комментарий от Borizz

Проверь в php.ini параметры

post_max_size
upload_max_filesize

Ну и если не поможет, то логи по максимуму, и вперёд, читать.

Ivan_qrt ★★★★★
() автор топика
Последнее исправление: Ivan_qrt (всего исправлений: 1)
5 июля 2015 г.
Ответ на: комментарий от Ivan_qrt

У меня почему на sock не работает загрузка больших файлов, через 127.0.0.1:9000 заработала.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.