Настройка Nginx для Bitrix - конфиг, SSL, кэширование, производительность | AdminWiki

Настройка Nginx для Bitrix: Полное руководство для разработчиков

18 декабря 2025 7 мин. чтения #bitrix #bitrix nginx #devops #nginx #web сервер #конфигурация nginx #настройка nginx #оптимизация

Представь, что твой Bitrix-сайт работает на Apache, но ты хочешь больше скорости, стабильности и контроля. Nginx — это мощный инструмент, который может ускорить твой проект в разы. Давай разберем, как правильно настроить Nginx для работы с 1С-Битрикс, чтобы получить максимальную производительность и избежать типичных ошибок.

В этом руководстве я, как опытный DevOps-ментор, проведу тебя через все этапы: от базовой установки до тонкой настройки кэширования и безопасности.

Подготовка сервера и установка Nginx

Перед тем как начать настройку Nginx для Bitrix, убедись, что у тебя установлены все необходимые компоненты. Для работы Битрикса потребуется PHP-FPM и соответствующие расширения.

Важно: Bitrix официально рекомендует использовать PHP версии 8.0 и выше. Убедись, что у тебя установлена совместимая версия PHP-FPM.
bash
# Установка Nginx и PHP-FPM на Ubuntu/Debian
sudo apt update
sudo apt install nginx php-fpm php-cli php-curl php-mysql php-gd php-mbstring php-xml php-zip php-bcmath php-intl php-soap

# Проверка версий
nginx -v
php --version

Базовая конфигурация Nginx для Bitrix

Основная конфигурация находится в файле виртуального хоста. Создадим конфиг для нашего сайта.

config
# /etc/nginx/sites-available/bitrix-site.conf
server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    root /var/www/bitrix;
    index index.php index.html;

    # Основные настройки для Bitrix
    client_max_body_size 100M;
    client_body_buffer_size 128k;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    # Обработка статических файлов
    location ~* \.(jpg|jpeg|gif|png|ico|css|js|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
        access_log off;
        try_files $uri =404;
    }

    # Запрет доступа к системным файлам
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    location ~* /\.ht {
        deny all;
    }

    # Обработка PHP через PHP-FPM
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php8.2-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;
    }

    # Основной location для Bitrix
    location / {
        try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;
    }

    # Специальные правила для Bitrix
    location = /bitrix/urlrewrite.php {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~* ^/upload/ {
        expires 30d;
        add_header Cache-Control "public";
        try_files $uri =404;
    }
}
Внимание: Не забудь заменить your-domain.com на реальное доменное имя и /var/www/bitrix на путь к файлам твоего сайта. Также проверь путь к сокету PHP-FPM — он может отличаться в зависимости от версии PHP.

Активация конфигурации

bash
# Создаем симлинк для активации сайта
sudo ln -s /etc/nginx/sites-available/bitrix-site.conf /etc/nginx/sites-enabled/

# Проверяем конфигурацию на ошибки
sudo nginx -t

# Перезагружаем Nginx
sudo systemctl reload nginx

Настройка SSL (HTTPS) для Bitrix

Для современных сайтов обязателен HTTPS. Настроим SSL с помощью Let's Encrypt.

bash
# Установка Certbot для получения SSL сертификата
sudo apt install certbot python3-certbot-nginx

# Получение сертификата
sudo certbot --nginx -d your-domain.com -d www.your-domain.com

# Автоматическое обновление сертификата
sudo certbot renew --dry-run

После получения сертификата обнови конфигурацию Nginx:

config
server {
    listen 443 ssl http2;
    server_name your-domain.com www.your-domain.com;
    
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    
    # Настройки SSL для безопасности
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    # Остальная конфигурация как в примере выше
    # ...
}

# Редирект с HTTP на HTTPS
server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    return 301 https://$server_name$request_uri;
}

Оптимизация производительности

Правильная настройка Nginx может значительно ускорить работу Bitrix. Вот ключевые параметры:

Кэширование статики

Добавь эти правила в конфигурацию для лучшего кэширования:

config
# Кэширование изображений
location ~* \.(jpg|jpeg|png|gif|ico|svg)$ {
    expires 365d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

# Кэширование CSS и JS
location ~* \.(css|js)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

# Кэширование шрифтов
location ~* \.(woff|woff2|ttf|eot)$ {
    expires 365d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

Настройка Gzip сжатия

config
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied any;
gzip_comp_level 6;
gzip_types
    text/plain
    text/css
    text/xml
    text/javascript
    application/javascript
    application/xml+rss
    application/json
    image/svg+xml;

Решение частых проблем

Проблема 1: Ошибка 404 при открытии страниц

Решение: Убедись, что в конфигурации правильно указан путь к urlrewrite.php:

config
location / {
    try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;
}

Проблема 2: Медленная загрузка PHP-скриптов

Решение: Оптимизируй настройки PHP-FPM и Nginx буферов:

config
location ~ \.php$ {
    # ...
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 16k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_read_timeout 300;
}

Мониторинг и логирование

Для отладки и мониторинга производительности настрой логирование:

config
# Формат логов с временем выполнения
log_format main '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent" '
                '$request_time $upstream_response_time';

access_log /var/log/nginx/bitrix-access.log main;
error_log /var/log/nginx/bitrix-error.log warn;

# Отдельные логи для медленных запросов
location / {
    # ...
    access_log /var/log/nginx/bitrix-slow.log main if=$slow;
    set $slow 0;
    if ($request_time > 3) {
        set $slow 1;
    }
}
Совет: Используй инструменты вроде ngxtop или goaccess для анализа логов Nginx в реальном времени.

Сравнение конфигураций Nginx для Bitrix

Параметр Базовая настройка Оптимизированная настройка Эффект
Кэширование статики Без кэширования Кэш на 30-365 дней Ускорение загрузки на 40-60%
Gzip сжатие Отключено Включено с оптимизацией Уменьшение трафика на 70%
Буферы PHP-FPM Стандартные 128k/256k буферы Устранение ошибок 502
Keepalive 65 секунд 30 секунд Экономия памяти

Часто задаваемые вопросы (FAQ)

Как проверить, что Nginx правильно обрабатывает PHP?

Создай файл info.php в корне сайта с содержимым <?php phpinfo(); ?> и открой его в браузере. Если видишь информацию о PHP — конфигурация работает правильно.

Почему Bitrix показывает ошибки после перехода на Nginx?

Чаще всего проблема в правах доступа к файлам или неправильных путях. Проверь:

  • Права на папки (755 для директорий, 644 для файлов)
  • Владельца файлов (должен совпадать с пользователем PHP-FPM)
  • Правильность пути в конфиге Nginx

Как настроить кэширование для Bitrix Managed Cache?

Для работы Managed Cache нужны правильные настройки в .settings.php и установка memcached или redis. В Nginx дополнительная настройка не требуется, но убедись, что пути к статике корректно обрабатываются.

Какие модули Nginx полезны для Bitrix?

Рекомендую установить:

  • nginx-module-brotli — сжатие лучше чем gzip
  • nginx-module-headers-more — управление заголовками
  • nginx-module-cache-purge — очистка кэша

Заключение

Правильная настройка Nginx для Bitrix — это не просто копирование конфига, а понимание того, как работает твой сайт. Начни с базовой конфигурации, затем постепенно добавляй оптимизации, отслеживая результаты.

Ключевые моменты, которые ты должен запомнить:

  • Всегда проверяй конфиг командой nginx -t перед перезагрузкой
  • Настрой кэширование статики — это даст максимальный прирост производительности
  • Используй HTTPS с современными настройками безопасности
  • Мониторь логи для выявления проблем на ранней стадии

Теперь у тебя есть полный набор инструментов для настройки Nginx под Bitrix. Экспериментируй, тестируй и находи оптимальную конфигурацию для твоего проекта!

Поделиться:
Сохранить гайд? В закладки браузера