Что нового

fastcgi cache и DLE

Oleksandr Miroshnichenko

Участник
Регистрация
30 Июл 2021
Сообщения
40
Реакции
64
Всем привет, нужна помощь с правильной настройкой fastcgi cache для DLE.
Кеш работает отлично, но возникает ошибка, когда гость заходит на закешированную страницу и жмет лайк или диcлайк, то появляется ошибка: "Ваша пользовательская сессия истекла, перезагрузите страницу в браузере и при необходимости войдите на сайт повторно."

DELETED

Подскажите что я не учел или куда смотреть. Спасибо!
 
Последнее редактирование:
как вариант - https://webrambo.ru/89-fiks-problemy-s-nestandartnymi-reytingami-v-113-i-vyshe-v-moih-shablonah.html
тут проблема в JS скриптах шаблона, а не в настройке сервера.
Рейтинг стандартный ('Нравится' или 'Не нравится'), шаблон сам верстал - в js файлах шаблона нет ничего связанного с рейтингом.
Ссылки для лайков и дислайков выводятся тегами [rating-plus][/rating-plus] и [rating-minus][/rating-minus].

Проблема в том, что при полном кешировании страницы, также кешируется dle_login_hash (это параметр выводимый dle в исходном коде каждой страницы), потом когда он передается на обработчик, происходит его сверка и скрипт понимает что хеш невалидный для данного гостя и выводит ошибку.
Фиксится только удалением строк в файле engine/ajax/rating.php:
Код:
if( $_REQUEST['user_hash'] == "" OR $_REQUEST['user_hash'] != $dle_login_hash ) {
    echo "{\"error\":true, \"errorinfo\":\"{$lang['sess_error']}\"}";
    die();
}

Но насколько это безопасно - хз.
P.S. Да-да, сам спросил - сам ответил. Но все же "правильного" решения я все еще не нашел.
 
Последнее редактирование:
Вынести dle_login_hash в отдельный файл, и не кешировать его
 
Привет всем. Знаю что тема старая но для меня актуальна. В интернете для DLE не могу найти как корректно настроить fastcgi cache. Может есть у кого то адекватный конфиг? нашел только такой:


PHP:
add_header X-Cache $upstream_cache_status;

set $no_cache 0;

if ($request_method = POST) {
    set $no_cache 1;
} 

if ($query_string != "") {
    set $no_cache 1;
}   

if ($request_uri ~* "phpmyadmin|webmail|sitemap|google_news|admin|login|logout|lostpassword|register|feedback|pm") {
    set $no_cache 1;
}   

if ($http_cookie ~* "dle_password|dle_user_id|xml|rss") {
    set $no_cache 1;
}

# Only cache .html pages
if ($request_uri !~* "\.html$") {
    set $no_cache 1;
}

fastcgi_cache fastcgicache;
fastcgi_cache_min_uses 1;
fastcgi_cache_valid 200 301 302 304 1h;
fastcgi_cache_key $scheme$host$request_uri$request_method;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;

ну и в nginx.conf есть:
NGINX:
# FastCGI Cache settings
fastcgi_cache_path /tmp/nginx_cache levels=1:2 keys_zone=fastcgicache:10m max_size=1024m inactive=1h;
fastcgi_buffers 8 256k;
fastcgi_buffer_size 256k;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
 
Последнее редактирование модератором:
Кто настраивал себе кеш на nginx, какие у вас настроки в конфиге? Ситуация аналогичная с сообщениямы выше по dle_login_hash
 
Верх