Пытаясь реализовать кеширование для медленного сайта Wordpress, я включил кеширование на уровне NGINX.
Однако кажется, что он держится за обработанный файл и не хочет отпускать.
Его нет в кеше, я попытался вернуть все обратно, отключил SendFile, однако Nginx все еще хочет обслуживать устаревший файл, созданный 5 дней назад.
Я удалил Nginx, переустановил, перестроил, ничего.
Есть предположения?
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile off;
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";
}
fastcgi_cache_path / var / run / nginx-cache levels = 1: 2 keys_zone = NEN_CACHE: 100 м неактивно = 60 м; fastcgi_cache_key "$ scheme $ request_method $ host $ request_uri";
server {
listen 82 default_server;
listen [::]:81 default_server ipv6only=on;
root /var/www/html/nen;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name localhost;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_no_cache $no_cache;
fastcgi_cache_bypass $no_cache;
# fastcgi_cache drm_custom_cache;
fastcgi_cache NEN_CACHE;
fastcgi_cache_valid 404 60m;
fastcgi_cache_valid 200 60m;
fastcgi_max_temp_file_size 4m;
fastcgi_cache_use_stale updating;
add_header X-Cache $upstream_cache_status;
}
Это не прямой ответ, он должен рассказать вам, как решить это самостоятельно. Эти вещи часто сложно решить, потому что вы не можете опубликовать все.
Вернитесь к основам. Удалите все лишние настройки из вашего местоположения PHP. Используйте простой файл PHP, который просто вызывает phpinfo (). Попробуйте вызвать PHP через сокет, чтобы узнать, имеет ли это значение. Проверьте журналы доступа и ошибок PHP и nginx для получения полезной информации. После того, как основы заработают, добавьте в Wordpress кеширование Nginx. Я бы не стал слишком заморачиваться с кешированием внутри Wordpress, если у вас нет большого количества зарегистрированных пользователей, кеш Nginx будет обслуживать большую часть вашего сайта большую часть времени. Сделайте это в отдельном каталоге в другом месте nginx, если вы не можете остановить производство.
Так я называю HHVM, мой интерпретатор PHP, но я вызываю php-fpm так же, как и вы.
upstream php {
server 127.0.0.1:9001;
}
# Inside my php location
fastcgi_pass php;
Похоже, что кеширование происходит из-за WP Super Cache, плагина для wordpress.
Я обычно рекомендую вам проконсультироваться его документация, но этот плагин пострадал невероятно серьезная уязвимость несколько лет назад это полностью разрушило мое доверие к автору. Лично я бы с большим предубеждением удалил его с вашего сервера (ов) и использовал бы слой кеширования более высокого уровня (например, Nginx, как вы это делаете, или Лак, что превосходно) в качестве единственной системы кэширования всей страницы.