NGINX: проблемы с картинками и вывод ошибок Есть решение

После установки Shop-Script на VPS с конфигурацией Nginx + FastCGI в лог валятся ошибки и иногда оч. медленно грузятся картинки товаров с миниатюрами.

Установка "чистая", без плагинов, с тестовым товарами, проблемы наблюдаются на разных темах дизайна.

Ошибки и нотайсы почему-то только про файлы из кэша. А касаемо картинок - сначала они, будто, запрашиваются по несуществующей директории, а потом по существующей:

2020/03/21 19:02:34 [error] 6146#6146: *1427 openat() "/var/www/user/data/www/site.ru/wa-data/public/site/themes/smobile/img/promoImg1.png" failed (2: No such file or directory), client: 46.160.55.3, server: site.ru, request: "GET /wa-data/public/site/themes/smobile/img/promoImg1.png?v1.0.4 HTTP/2.0", host: "site.ru", referrer: "https://site.ru/"
PHP message: PHP Notice:  Trying to get property 'value' of non-object in /var/www/user/data/www/site.ru/wa-cache/apps/shop/templates/compiled/shop_ru_RU/44/76/35/44763511e6b16874fb537fccecc34fc8ebacc77c.file.reviews.html.php on line 193
PHP message: PHP Notice:  Undefined index: _error_template in /var/www/user/data/www/site.ru/wa-cache/apps/shop/templates/compiled/shop_ru_RU/44/76/35/44763511e6b16874fb537fccecc34fc8ebacc77c.file.reviews.html.php on line 194
PHP message: PHP Notice:  Trying to get property 'value' of non-object in /var/www/user/data/www/site.ru/wa-cache/apps/shop/templates/compiled/shop_ru_RU/44/76/35/44763511e6b16874fb537fccecc34fc8ebacc77c.file.reviews.html.php on line 194" while reading response header from upstream, client: 46.160.55.3, server: site.ru, request: "GET /smartfon-apple-a/reviews/ HTTP/2.0", upstream: "fastcgi://unix:/var/www/php-fpm/site.sock:", host: "site.ru", referrer: "https://site.ru/smartfon-apple-a/"
2020/03/21 19:02:41 [error] 6146#6146: *1427 FastCGI sent in stderr: "PHP message: PHP Notice:  Undefined index: _file_template in /var/www/user/data/www/site.ru/wa-cache/apps/shop/templates/compiled/shop_ru_RU/44/76/35/44763511e6b16874fb537fccecc34fc8ebacc77c.file.reviews.html.php on line 193

2 ответа

  • 1
    Олег 21 марта 2020 22:24 # Решение

    Отвечу сам себе, вдруг кто столкнётся с аналогичным

    1) No such file or directory по изображениям - это @2 эскизы генерятся на лету, в моем случае почему-то порой оч долго (наверное из за размера изобр. тестовых товаров)

    2) Касаемо остальных error-ов, notice-ов и приколов на фронтенде - установил в php.ini, параметр error_reporting в 4177, подсмотрел на шаред-хостинге. Т.е. они и раньше были, просто всплыли при попытке переезда на VPS.

    3) Ещё есть вот что:

    7 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/4/00/0000000004 while reading upstream

    Судя по всему, из-за недостаточного буфера NGINX-a - пишется в файл, хотя буфер я увеличивал по такой рекомендации. Непонятно чем он переполняется, если тоже при генерации картинок, то пофиг, а так можно по этой инструкции вычислить максимальные запросы и настроить буфер.

  • 1
    Олег 21 марта 2020 19:25 #

    Конфиг брал из документации, остальное всё вроде нормально работает.

    server {
    	server_name site.ru;
    	return 301 https://$host:443$request_uri;
    	listen xx.xx.xx.xx:80;
    }
    server {
    	server_name site.ru;
    	ssl_certificate "/var/www/httpd-cert/user/site.ru_le1.crtca";
    	ssl_certificate_key "/var/www/httpd-cert/user/site.ru_le1.key";
    	ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
    	ssl_prefer_server_ciphers on;
    	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    	add_header Strict-Transport-Security "max-age=31536000;";
    	ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
    	charset utf-8;
    	index index.php;
    	disable_symlinks if_not_owner from=$root_path;
    	include /etc/nginx/vhosts-includes/*.conf;
    	include /etc/nginx/vhosts-resources/site.ru/*.conf;
    	access_log /var/www/httpd-logs/site.ru.access.log;
    	error_log /var/www/httpd-logs/site.ru.error.log notice;
    	ssi on;
    	set $root_path /var/www/user/data/www/site.ru;
    	root $root_path;
    	
    	try_files $uri $uri/ /index.php?$query_string;
    	
    	location /index.php {
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
            fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f hi@site.ru";
        }
        
        # for install only
        location /install.php {
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
        }
        
        location /api.php {
            fastcgi_split_path_info  ^(.+\.php)(.*)$;
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
        }
        
        location ~ /(oauth.php|link.php|payments.php) {
            try_files $uri $uri/ /index.php?$query_string;
        }    
    
        location ^~ /wa-data/protected/ {
            internal;
        }
        
        location ~ /wa-content {
            allow all;
        }
    
        location ^~ /(wa-apps|wa-plugins|wa-system|wa-widgets)/.*/(lib|locale|templates)/ {
            deny all;
        }
    
        location ~* ^/wa-(cache|config|installer|log|system)/ {
            return 403;
        }
    
        location ~* ^/wa-data/public/contacts/photos/[0-9]+/ {
             root /var/www/user/data/www/site.ru;
             access_log off;
             expires  30d;
             error_page   404  =  @contacts_thumb;
        }
    
        location @contacts_thumb {
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
            fastcgi_param  SCRIPT_NAME  /wa-data/public/contacts/photos/thumb.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/contacts/photos/thumb.php;
        }
      
        # photos app
        location ~* ^/wa-data/public/photos/[0-9]+/ {
            access_log   off;
            expires      30d;
            error_page   404  =  @photos_thumb;
        }
    
        location @photos_thumb {
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
            fastcgi_param  SCRIPT_NAME  /wa-data/public/photos/thumb.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/photos/thumb.php;
        }
        # end photos app
        
        # shop app
        location ~* ^/wa-data/public/shop/products/[0-9]+/ {
            access_log   off;
            expires      30d;
            error_page   404  =  @shop_thumb;
        }
        location @shop_thumb {
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
            fastcgi_param  SCRIPT_NAME  /wa-data/public/shop/products/thumb.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/shop/products/thumb.php;
        }
        
        location ~* ^/wa-data/public/shop/promos/[0-9]+ {
            access_log   off;
            expires      30d;
            error_page   404  =  @shop_promo;
        }
        location @shop_promo {
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
            fastcgi_param  SCRIPT_NAME  /wa-data/public/shop/promos/thumb.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/shop/promos/thumb.php;
        }
        # end shop app
        
        # memcached test
        location /mem.php {
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
        }
        
        # mailer app
        location ~* ^/wa-data/public/mailer/files/[0-9]+/ {
            access_log   off;
            error_page   404  =  @mailer_file;
        }
        location @mailer_file {
            include fastcgi_params;
            fastcgi_pass  unix:/var/www/php-fpm/site.sock;
            fastcgi_param  SCRIPT_NAME  /wa-data/public/mailer/files/file.php;
            fastcgi_param  SCRIPT_FILENAME $document_root/wa-data/public/mailer/files/file.php;
        }
        # end mailer app
    
        location ~* ^.+\.(jpg|jpeg|gif|png|js|css|svg|woff|woff2|webp)$ {
            access_log   off;
            expires      30d;
        }
    
    	gzip on;
    	gzip_comp_level 5;
    	gzip_disable "msie6";
    	gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
    	listen xx.xx.xx.xx:xx ssl http2;
    
    }
    

    в fastcgi_params добавлено

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;

    там, кстати было про SCRIPT_FILENAME выше, я закомментил (но пробовал и без коммента, всё также)

    # fastcgi_param   SCRIPT_FILENAME $request_filename;

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите