Исправить кеширование сайта на Nginx (страниц больше 5млн).
На сайте включено кеширование страниц + модуль gzip (что бы кеш весил меньше). Кеш должен держаться год, страниц там будет больше 5млн.
Кеширование уже мне сделали - но почему-то КЕШ сбрасывается постоянно. Движок отдает динамичный контент (надо один раз закешировать результат страницы и хранить его год и отдавать его поисковым ботам), люди же просто попадают на обычную страницу. Как это сделать - ниже я писал.
Нужно просто напаисать правила с нуля, и написать их правильно.
Потому что сейчас - КЕШ сбрасывается сам постоянно, он кеширует - через некоторое время результат уже другой (т.е. сбросил\перекешировался по новой - а это не допустимо), почему - не знаю.
Кешируются страницы такого вида и только:
http://domain.com/view/itemid=999?domain=site2.com%2F%3Fcom_content%3Den-id4104&ip=1.2.3.4.5
Где, http://domain.com - хост, для которого этот конфиг и собственно будет все кешироваться.
view/itemid=999, где 999 - динамичная переменная, это страницы разные с разным контентом.
?domain=www.site1.com%2F%3Fcom_content%3Den-id999999 - www.site1.com%2F%3Fcom_content%3Den-id999999 динамичная переменная (тоже может меняться) - разные значения = разные сайты и разные страницы.
&ip=1.2.3.4.5 - IP, динамичная переменная, меняется. Но - страницы одинаковые. Наример,
http://domain.com/view/itemid=12?domain=site5.com%2F%3Fcom_content%3Den-id4104&ip=1.2.3.4.5
и
http://domain.com/view/itemid=12?domain=site5.com%2F%3Fcom_content%3Den-id4104&ip=9.9.9.9
==> это одна и та же страница.
Пример ссылок:
http://domain.com/view/itemid=999?domain=www.site1.com%2F%3Fcom_content%3Den-id999999&ip=78.12.3.255
или
http://domain.com/view/itemid=12?domain=site5.com%2F%3Fcom_content%3Den-id4104&ip=1.2.3.4.5
или
Кешируется страницы и отдаются после, только по определенным параметрам. Если посетитель не подходит под параметры - ему отдается обычная страница (не из кеша).
Страница НЕ кешируется, если:
1. У посетителя http_referer один из тех, что в списке: /etc/nginx/vhosts/admin/referers (рефер Поисковой системы, т.е. - что юзер перешёл из поисковика);
Формат списка сейчас такой:
yandex\. 1;
google\.com 1;
2. В ссылке ******&ip=78.12.3.255 - этот IP не совпадает ни с каким из списка /etc/nginx/vhosts/admin/bot_ips
Формат списка там такой сейчас:
1.2.3.4.5 1;
78.0.0.12\12 1;
3. UserAgent пользователя не совпадает с одним, из
default 0;
~*Googlebot 1;
~*Slurp 1;
~*Yahoo 1;
~*Bing 1;
~*MSNBot 1;
~*Teoma 1;
~*Scooter 1;
~*ia_archiver 1;
~*Lycos 1;
~*YandexBot 1;
~*StackRambler 1;
~*Mail\.Ru 1;
~*Aport 1;
~*WebAlta 1;
~*Crawler 1;
~*Spider 1;
~*LOCALSAPE 1;
~*AhrefsBot 1;
}
---
Конфиг текущий (я убрал оттуда кеширование и т.п. - )
#user 'user' virtual host 'site.com' configuration file
server {
server_name site.com www.site.com;
root /var/www/user/data/www/site.com/web;
ssi on;
access_log /var/www/httpd-logs/site.com.access.log ;
error_log /var/www/httpd-logs/site.com.error.log notice;
include /etc/nginx/vhosts-includes/*.conf;
include /etc/nginx/vhosts-resources/admin/*.conf;
listen 93.1.1.15:80;
charset utf-8;
error_page 404 /index.php;
error_page 403 /index.php;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ .php/ {
rewrite ^(.*.php)/ $1 last;
}
location ~ \.php {
try_files $uri /index.php =404;
include /etc/nginx/fastcgi_params;
fastcgi_param SSL_VERIFIED $ssl_client_verify;
fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
fastcgi_param SSL_DN $ssl_client_s_dn;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}