Конфигурация Nginx для WooCommerce: оптимизация корзины, оформления заказа и AJAX
Готовый конфиг Nginx для интернет-магазина WooCommerce: исключение кэша корзины и checkout, ускорение wc-ajax, защита админки и буферизация заказов.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/nginx/sites-available/shop.example.com.conf
# /etc/nginx/sites-available/{{domain}}.conf
server {
listen 80;
server_name {{domain}} www.{{domain}};
return 301 https://{{domain}}$request_uri;
}
server {
listen 443 ssl http2;
server_name {{domain}};
root /var/www/{{domain}}/public_html;
index index.php index.html;
ssl_certificate /etc/letsencrypt/live/{{domain}}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{{domain}}/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size {{client_max_body}};
# Исключения кэширования для WooCommerce
set $skip_cache 0;
if ($request_method = POST) { set $skip_cache 1; }
if ($query_string != "") { set $skip_cache 1; }
if ($request_uri ~* "/cart.*|/checkout.*|/my-account.*|/addons.*|/wc-api.*|wp-admin|/xmlrpc.php") {
set $skip_cache 1;
}
if ($http_cookie ~* "woocommerce_items_in_cart|woocommerce_cart_hash|wp_woocommerce_session_|wordpress_logged_in") {
set $skip_cache 1;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
# Оптимизация AJAX WooCommerce (wc-ajax=get_refreshed_fragments)
location ~* wc-ajax= {
fastcgi_pass unix:/run/php/php{{php_version}}-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_buffering off;
fastcgi_read_timeout 60s;
}
location ~* \\.(jpg|jpeg|png|gif|ico|css|js|webp|avif|woff2)$ {
expires 365d;
add_header Cache-Control "public, no-transform, max-age=31536000";
access_log off;
}
location ~ \\.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php{{php_version}}-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_read_timeout 300s;
}
}
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
if ($http_cookie ~* 'woocommerce_items_in_cart') |
set $skip_cache 1; | Мгновенно отключает кэш FastCGI, как только покупатель добавляет первый товар в корзину, сохраняя актуальность счетчика корзины. |
location ~* wc-ajax= |
fastcgi_buffering off; | Отключает буферизацию AJAX-фрагментов WooCommerce, ускоряя обновление мини-корзины и оформление заказа. |
fastcgi_read_timeout 300s |
300s | Предотвращает тайм-аут 504 Gateway Timeout при массовом импорте прайс-листов CSV и синхронизации с 1С/МойСклад. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 4 vCPU, 8 GB RAM, 80 GB NVMe, Debian 12 / Ubuntu 22.04
Расчетная нагрузка: до 10 000 товаров, ~3 000 уникальных посетителей/день
Timeweb Cloud
4 CPU / 8 GB NVMe
Процессор:
4 vCPU (3.5+ GHz)
Память RAM:
8 GB RAM (4 GB MariaDB Buffer Pool, 3 GB PHP-FPM, 1 GB Redis)
Накопитель:
80 GB NVMe SSD
Selectel
4 vCPU / 8 GB RAM
Процессор:
4 vCPU (3.5+ GHz)
Память RAM:
8 GB RAM (4 GB MariaDB Buffer Pool, 3 GB PHP-FPM, 1 GB Redis)
Накопитель:
80 GB NVMe SSD
Beget
Turbo 8 GB
Процессор:
4 vCPU (3.5+ GHz)
Память RAM:
8 GB RAM (4 GB MariaDB Buffer Pool, 3 GB PHP-FPM, 1 GB Redis)
Накопитель:
80 GB NVMe SSD
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Почему корзина очищается при переходе между страницами?
Это происходит, если FastCGI-кэш кэширует заголовки Set-Cookie сессии. Убедитесь, что директивы проверки кук `woocommerce_items_in_cart` и `wp_woocommerce_session_` добавлены в блок `if ($http_cookie ...)`.
Ошибка 504 Gateway Timeout при оформлении заказа
Увеличьте `fastcgi_read_timeout` в Nginx и `max_execution_time` в php.ini до 300 секунд для выполнения интеграций платёжных шлюзов.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.