Проблема W3Total Cache с Nginx

Привет, я установил общий кеш w3 на моем сайте, работающем на nginx, однако у меня есть ошибки. Например, когда я включаю кеширование страницы: улучшено, я получаю:

Похоже, что переписывание URL-адресов кэша страниц не работает. Если вы используете apache, убедитесь, что конфигурация сервера позволяет .htaccess или если nginx проверяет, что все конфигурационные файлы включены в конфигурацию.

Когда я выбираю диск кеширования страницы: базовая ошибка не отображается.

Вот конфигурация для сервера в файле /etc/nginx/nginx.conf:

http://pastebin.com/SEdnyHbf

Если это имеет значение, у меня установлено несколько сайтов, все в / srv / www

Я вижу, что W3 Total Cache создает отдельный nginx.conf для каждого веб-сайта, например /srv/www/mysite.com/public_html/nginx.conf, и внутри него существуют правила W3 Total Cache, вставляемые здесь: http: //pastebin.com/dANPVMJk

Я хотел бы иметь установку, которая работает для любого количества сайтов, которые я добавлю. Клиенты на моем сервере должны иметь возможность обновлять свою конфигурацию полного кэша W3 по своему усмотрению без перезапуска сервера. Также они могут отказаться вообще не использовать плагин.

Solutions Collecting From Web of "Проблема W3Total Cache с Nginx"

У вашего основного файла конфигурации на /etc/nginx/nginx.conf есть некоторые подводные камни, и это не должно быть так сложно. Позвольте мне поделиться более простой версией для вас, чтобы начать с …

 server { server_name www.yourdomain.com; # please replace the root path # ex: /srv/www/mysite.com/public_html root /path/to/wordpress/installation; index index.php; # please update the path to W3 Total Cache's configuration # ex: /srv/www/mysite.com/public_html/nginx.conf include /path/to/wordpress/installation/nginx.conf; location ~* \.php$ { try_files $uri =404; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location / { try_files $uri $uri/ /index.php?$args; } } 

В зависимости от вашей настройки вы можете изменить вышеизложенное (или добавить еще несколько строк кода). Например, если вы заходите на свой сайт с www впереди, тогда вам может понадобиться добавить еще один server блок, подобный этому …

 server { server_name yourdomain.com; return 301 $scheme://www.yourdomain.com$request_uri; } 

Всякий раз, когда вы обновляете свои настройки W3 Total Cache, всегда помните о перезагрузке или перезагрузке сервера Nginx. В противном случае Nginx все равно будет обслуживать предыдущие конфигурации из W3 Total Cache. (Мне нравится Apache, который поддерживает обработку правил htaccess на лету.)

Вышеупомянутая конфигурация была протестирована на CentOS, Ubuntu и Debian (последние версии) с последними версиями Nginx и PHP-FPM. Это не сработает, если Apache используется для обслуживания PHP.

Надеюсь это поможет.

Вам нужно установить путь к вашему .conf-файлу в общих настройках плагина, а затем W3 Total записать в файл.

Я бы создал файл w3-total.conf в / etc / nginx, затем запустил его www-data: www-data, чтобы w3 мог его записать, а затем добавить его как include в файл вашего сервера.

Обновить:

Чтобы ответить на ваши дополнительные вопросы. Если все ваши сайты используют одни и те же параметры W3 Total Cache, они дают им одинаковый путь к файлу конфигурации и включают его во все блоки сервера.

Для упрощения я хотел бы сохранить все мои серверные блоки в 1 файле, а затем включить глобальный wp.conf и глобальный w3-total.conf.

 server { listen 80; server_name domain1.com www.domain1.com; root /srv/www/domain1; index index.php index.html index.htm; include w3-total.conf; include wp.conf; } server { listen 80; server_name domain2.com www.domain2.com; root /srv/www/domain2; index index.php index.html index.htm; include w3-total.conf; include wp.conf; } 

wp.conf:

 error_page 404 = @wordpress; log_not_found off; location / { try_files $uri $uri/ /index.php?$args; } rewrite /wp-admin$ $scheme://$host$uri/ permanent; location @wordpress { fastcgi_pass php; fastcgi_param SCRIPT_FILENAME $document_root/index.php; include fastcgi_params; fastcgi_param SCRIPT_NAME /index.php; } location ~ \.php$ { fastcgi_max_temp_file_size 1M; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_index index.php; fastcgi_pass php; // php is defined in nginx.conf fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; try_files $uri @wordpress; } 

nginx.conf

 user www-data; worker_processes 8; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 3; client_max_body_size 13m; # Upstream to abstract backend connection(s) for PHP. upstream php { server unix:/var/run/php5-fpm.sock; //Make sure your setup to use sockets in /etc/php5/fpm/pool.d/www.conf } include sites-enabled/*; } 

Вышеупомянутая конфигурация предназначена для небольшого Debian Squeeze VPS, работающего под управлением php-fpm 5.4 и Nginx 1.2.0