Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Nginx+FastCGI + корзина - проблема


Recommended Posts

Всем привет,
Столкнулся с проблемой

Корзина не обновляется при смене страницы.
Более того, при переходе с корзины (продолжить покупки) теряется содержимое корзины.
Ну, и, соответственно, не показывает количество товаров.

Проблема, как я понимаю, в том, что корзину нужно вынести в ЕSI и не кэшировать вообще.
Вопрос - как. Копаю третий день, уже мозги кипят, пока ничего толкового не нарыл.

Конфиг 

Spoiler

fastcgi_cache_path /var/www/cache/vps1 levels=1:2 keys_zone=vps1:1000m inactive=168h;

fastcgi_cache_key "$scheme$request_method$host$request_uri";

 

# Expires map

map $sent_http_content_type $expires {

    default                    off;

    text/html                  epoch;

    text/css                   max;

    application/javascript     max;

    ~image/                    max;

}

 

 

server {

    root /var/www/vps1/html/;

    index  index.php index.html;

    server_name vps1.com.ct;

    error_log /var/log/nginx/vps1_error.log;

    access_log /var/log/nginx/vps1_access.log;

 

    expires $expires;

 

location /image/data {

        autoindex on;

    }

    location /admin {

        index index.php;

    }

    location / {

        try_files $uri @opencart;

    }

    location @opencart {

        rewrite ^/(.+)$ /index.php?_route_=$1 last;

    }

    

    location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {

        deny all;

    }

 

    location ~ /\. {

        deny all;

        access_log off;

        log_not_found off;

    }

    location ~*  \.(jpg|jpeg|png|gif|css|js|ico)$ {

        expires max;

        log_not_found off;

    }

 

    # Fastcgi cache rules

    include snippets/fastcgi-cache.conf;

 

    include snippets/limits.conf;

 

   location ~ \.php$ {

                try_files $uri =404;

                include snippets/fastcgi-params.conf;

 

                fastcgi_pass unix:/run/php/php7.3-fpm.sock;

 

                 fastcgi_cache_bypass $skip_cache;

                fastcgi_no_cache $skip_cache;

 

                 fastcgi_cache vps1;

 

                fastcgi_cache_valid 168h;

 

                fastcgi_read_timeout 6000;

                fastcgi_connect_timeout 6000;

                fastcgi_send_timeout 6000;

                proxy_read_timeout 6000;

                proxy_connect_timeout 6000;

                proxy_send_timeout 6000;

                send_timeout 6000;

    }

 

}

 

Буду благодарен за помощь и советы.
Народ теряет заказы в магазине :( 

Змінено користувачем VadimBK
Надіслати
Поділитися на інших сайтах


3 часа назад, VadimBK сказал:

Проблема, как я понимаю, в том, что корзину нужно вынести в ЕSI и не кэшировать вообще.

послушаю, пока не понимаю причем тут ESI

Сайт лучше сразу показывать, пост конфига, думаю, не решит вопросов.

Вы уверены что это nginx?

Надіслати
Поділитися на інших сайтах

6 hours ago, ibond said:

послушаю, пока не понимаю причем тут ESI

Сайт лучше сразу показывать, пост конфига, думаю, не решит вопросов.

Вы уверены что это nginx?

Конфиги (еще раз) под катом - 
Да, это именно nginx+fastcgi cache. При отключении кэша корзина работает. Т.е. имеет место агрессивное кэширование 

Spoiler

$cat /etc/nginx/snippets/sites-available/vps1.conf

fastcgi_cache_path /var/www/cache/vps1 levels=1:2 keys_zone=vps1:1000m inactive=168h;

fastcgi_cache_key "$scheme$request_method$host$request_uri";

 

# Expires map

map $sent_http_content_type $expires {

    default                    off;

    text/html                  epoch;

    text/css                   max;

    application/javascript     max;

    ~image/                    max;

}

 

server {

    root /var/www/vps1/html/;

    index  index.php index.html;

    server_name vps1.com.ct;

    error_log /var/log/nginx/vps1_error.log;

    access_log /var/log/nginx/vps1_access.log;

 

    expires $expires;

 

location /image/data {

        autoindex on;

    }

    location /admin {

        index index.php;

    }

    location / {

        try_files $uri @opencart;

    }

    location @opencart {

        rewrite ^/(.+)$ /index.php?_route_=$1 last;

    }

    

    location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {

        deny all;

    }

 

    location ~ /\. {

        deny all;

        access_log off;

        log_not_found off;

    }

    location ~*  \.(jpg|jpeg|png|gif|css|js|ico)$ {

        expires max;

        log_not_found off;

    }

 

    # Fastcgi cache rules

    include snippets/fastcgi-cache.conf;

 

 

 

   location ~ \.php$ {

                try_files $uri =404;

                include snippets/fastcgi-params.conf;

 

                fastcgi_pass unix:/run/php/php7.3-fpm.sock;

 

                 fastcgi_cache_bypass $skip_cache;

                fastcgi_no_cache $skip_cache;

 

                 fastcgi_cache vps1;

 

                fastcgi_cache_valid 168h;

 

                fastcgi_read_timeout 6000;

                fastcgi_connect_timeout 6000;

                fastcgi_send_timeout 6000;

                proxy_read_timeout 6000;

                proxy_connect_timeout 6000;

                proxy_send_timeout 6000;

                send_timeout 6000;

    }

 

}

===

 

$cat /etc/nginx/snippets/fastcgi-cache.conf

# The key to use when saving cache files, which will run through the MD5 hashing algorithm.

fastcgi_cache_key "$scheme$request_method$host$request_uri";

 

# If an error occurs when communicating with FastCGI server, return cached content.

# Useful for serving cached content if the PHP process dies or timeouts.

fastcgi_cache_use_stale error timeout invalid_header http_500;

 

# Allow caching of requests which contain the following headers.

fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

 

 

 

### Answer STALE and update cache

fastcgi_cache_use_stale updating;

fastcgi_cache_background_update on;

 

 

 

# Show the cache status in server responses.

add_header Fastcgi-Cache $upstream_cache_status;

 

# Don't skip by default

set $skip_cache 0;

 

# POST requests and urls with a query string should always go to PHP

if ($request_method = POST) {

    set $skip_cache 1;

}

 

if ($query_string != "") {

    set $skip_cache 1;

}

 

==

 

$cat /etc/nginx/snippets/limits.conf

# How long each connection should stay open for.

keepalive_timeout 15;

 

# Timeout for reading client request body.

client_body_timeout 30;

 

# Timeout for reading client request header.

client_header_timeout 30;

 

# Timeout for transmitting reponse to client.

send_timeout 30;

 

# Set the maximum allowed size of client request body. This should be set

# to the value of files sizes you wish to upload to the WordPress Media Library.

# You may also need to change the values `upload_max_filesize` and `post_max_size` within

# your php.ini for the changes to apply.

client_max_body_size 64M;

 

 

(из конфига удалена часть letsencrypt)

Змінено користувачем VadimBK
добавил еще раз конфиги.
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.