NGINX
#nginx#bitrix#php-fpm#cms#fastcgi#urlrewrite

Nginx: конфигурация для Bitrix CMS с PHP-FPM

Официальная конфигурация Nginx для Bitrix CMS с поддержкой PHP-FPM, URL rewriting, кеширования статики и безопасности. Основано на документации Bitrix24.

Конфигурация Nginx для Bitrix CMS с PHP-FPM. Основано на официальной документации Bitrix24.

Базовая конфигурация

server {
    listen 80;
    server_name example.com www.example.com;
    
    root /var/www/bitrix;
    index index.php index.html;
    
    # Увеличенный размер для загрузки файлов
    client_max_body_size 200m;
    
    access_log /var/log/nginx/bitrix-access.log;
    error_log  /var/log/nginx/bitrix-error.log;
    
    # Основной location с URL rewriting
    location / {
        try_files $uri $uri/ @bitrix;
    }
    
    # URL rewriting через Bitrix
    location @bitrix {
        rewrite ^(.*)$ /bitrix/urlrewrite.php last;
    }
    
    # Обработка PHP
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        
        # Таймауты для Bitrix
        fastcgi_read_timeout 300s;
        fastcgi_connect_timeout 300s;
    }
    
    # Защита чувствительных директорий
    location ~ ^/(bitrix/modules|bitrix/php_interface|bitrix/tmp|bitrix/cache|\.svn|\.ht) {
        deny all;
        return 404;
    }
    
    # Статические файлы с кешированием
    location ~* \.(jpg|jpeg|gif|png|css|js|ico|svg|woff|woff2|ttf|eot|pdf)$ {
        expires max;
        access_log off;
        log_not_found off;
    }
    
    # Защита скрытых файлов
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

С поддержкой HTTPS

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;
    
    root /var/www/bitrix;
    index index.php index.html;
    
    client_max_body_size 200m;
    
    # SSL сертификаты
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    
    access_log /var/log/nginx/bitrix-access.log;
    error_log  /var/log/nginx/bitrix-error.log;
    
    location / {
        try_files $uri $uri/ @bitrix;
    }
    
    location @bitrix {
        rewrite ^(.*)$ /bitrix/urlrewrite.php last;
    }
    
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_read_timeout 300s;
        fastcgi_connect_timeout 300s;
    }
    
    location ~ ^/(bitrix/modules|bitrix/php_interface|bitrix/tmp|bitrix/cache|\.svn|\.ht) {
        deny all;
        return 404;
    }
    
    location ~* \.(jpg|jpeg|gif|png|css|js|ico|svg|woff|woff2|ttf|eot|pdf)$ {
        expires max;
        access_log off;
        log_not_found off;
    }
    
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

Важные замечания

⚠️ URL rewriting: Bitrix использует собственный механизм URL rewriting через /bitrix/urlrewrite.php. Директива try_files должна заканчиваться на @bitrix, который перенаправляет запросы в этот файл.

⚠️ Размер загрузки: client_max_body_size 200m необходим для загрузки файлов через админ-панель Bitrix.

⚠️ Таймауты: Увеличенные таймауты (300s) необходимы для обработки сложных операций Bitrix (импорт/экспорт, обработка больших файлов).

⚠️ Защита директорий: Обязательно защитите директории bitrix/modules, bitrix/php_interface, bitrix/tmp и bitrix/cache от прямого доступа.

Источники: