Конфигурация Nginx для WooCommerce: оптимизация корзины, оформления заказа и AJAX
Готовый конфиг Nginx для интернет-магазина WooCommerce: исключение кэша корзины и checkout, ускорение wc-ajax, защита админки и буферизация заказов.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/nginx/sites-available/shop.example.com.conf
# /etc/nginx/sites-available/shop.example.com.conf
listen 80;
server_name shop.example.com www.shop.example.com;
return 301 https://shop.example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name shop.example.com;
root /var/www/shop.example.com/public_html;
# Security Headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
index index.php index.html;
ssl_certificate /etc/letsencrypt/live/shop.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/shop.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 128M;
# Исключения кэширования для 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/php8.2-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/php8.2-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 уникальных посетителей/день
4 CPU / 8 GB NVMe
Timeweb Cloud
Рекомендуемые ресурсы
4 vCPU (3.5+ GHz) /
8 GB RAM (4 GB MariaDB Buffer Pool, 3 GB PHP-FPM, 1 GB Redis) /
80 GB NVMe SSD
4 vCPU / 8 GB RAM
Selectel
Рекомендуемые ресурсы
4 vCPU (3.5+ GHz) /
8 GB RAM (4 GB MariaDB Buffer Pool, 3 GB PHP-FPM, 1 GB Redis) /
80 GB NVMe SSD
Turbo 8 GB
Beget
Рекомендуемые ресурсы
4 vCPU (3.5+ GHz) /
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 секунд для выполнения интеграций платёжных шлюзов.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.