bitrix php fpm config

Битрикс в связке Nginx+PHP-FPM, настройка ЧПУ, а так же композитный кэш с отдачей через nginx. Доработанная конфигурация

Цель: Предоставить конфигурацию виртуального сервера Nginx для работы Битрикс-cms в связке Nginx+PHP-FPM. Который в прочем подойдёт и для связки Nginx+Apache2, с небольшими доработками.

Целевая аудитория: Администраторы серверов, продвинутые администраторы сайтов, программисты.

Cтатей на эту тему достаточно, но если смотреть не официальные, то там как правило содержатся ошибки, а в официальных полно if которые в Nginx использовать не желательно. Надеюсь после того как я выложу данный конфиг к связке Nginx+PHP-FPM станут относиться серьёзнее.

Я покажу реализацию отдачи файлового композитного кэша. В целом отдача с memcached делается по аналогии. В конфигурации отдачи файлового кэша я насчитал 11 if, от которых я и избавился переделав их на map.

Начну с упрощённого варианта ЧПУ для тех кому нужна просто связка Nginx+PHP-FPM без отдачи композитного кэша через Nginx. Подразумевается что секция server уже настроена, с доменными именами и передачей в php-fpm.

Как не удивительно смотря на те полотна конфигов которые мне попадались, этого достаточно чтобы битрикс корректно заработал. Если нужен редирект с index.php и index.html на без, то нужно ещё дописать вот эту строку:

К сожалению тут достойной замене if нет. Но данная строчка работает не создавая проблем.

Хочу подчеркнуть что это именно минималистичная конфигурация без правил для статики, сжатия, и я там прикрыл только файлы композитного кэша от прямого доступа. Конфигурация которая прикрывает определённые места от прямого доступа через nginx довольно индивидуальна. У меня есть вот такой набор который может кому-то подойти. Но использовать нужно аккуратно с осознанием дела. Учитите что внесение данных локейшенов в свою конфигурацию может привести к неработоспособности сайта или части его функций.

Ну и конечно пример location для статических файлов

Теперь перейдём к конфигу для работы композита с отдачей файлов кэша через nginx. Первым делом необходимо определить можно ли отдавать данному запросу композитный кэш или его нужно отправить на обработку через php. Для этого в Nginx в секции http добавим несколько map, а так же несколько директив:

Далее уже непосредственно в секции server прописываем

Ну и для понимания как примерно будет выглядеть минимальная конфигурация секции server

Источник

Birtix + Nginx ( О нюансах перевода сайтов под управлением CMS «Битрикс» на работу через легковесную спарку «Nginx + PHP-FPM». )

28 июня 2017 (обновлено 2 декабря 2017)

OS: «Linux Debian 9», «Linux Ubuntu 16 LTS».

Расскажу здесь о некоторых особенностях настройки площадки для запуска сайтов под управлением CMS «Bitrix». Эта система управления контентом продвигается в продажах как средство легко и непринуждённо создавать сайты. В инструкции от разработчиков сайты под управлением движка «Битрикс» рекомендуется разворачивать в среде исполнения «Apache + modPHP», даже распространяют готовую сборку в этой конфигурации под названием «VMBitrix» на базе «CentOS/Ubuntu», но мне такой подход сильно не нравится и здесь будет изложена последовательность действий, которые необходимо предпринять для корректной работы CMS «Bitrix» с «Nginx + PHP-FPM».

Уже лет десять как прошло с того момента, как стало странно запускать сервисы непосредственно на аппаратуре физического сервера, так что да, мы готовим для web-сервера виртуальную площадку, соблюдая определённые условия.

В KVM-Qemu для виртуального диска и сетевой карты обязательно всегда использовать VirtIO-драйверы:

В VMware следует обязательно использовать драйверы «VMware Paravirtual (PVSCSI)» для виртуального HDD и «VMXNET 2/3» для виртуальных NIC:

Тест производительности дисковой подсистемы.

Тест записи, по возможности в обход «кеша»:

Выше приведены показатели тестирования вначале дискового массива «NetApp» из SSD, а следом SSD и обычного SATA2 дисков моей рабочей станции.

Защищаем административный вход.

Сразу после инсталляции базовых компонентов операционной системы запрещаем сетевой вход через SSH для суперпользователя.

.
# Отключаем возможность удалённого входа для суперпользователя
PermitRootLogin no

# Запрещаем использование «пустых» паролей при подключении
PermitEmptyPasswords no

# Запрещаем передачу пользовательских переменных окружения
PermitUserEnvironment no

# Запрещаем перенаправление портов пользователя и транзит подключений (это конечный сервер, а не «шлюз»)
GatewayPorts no
X11Forwarding no
.

Добавляем аккаунты web-разработчиков.

По хорошему web-разработчику нечего делать на web-сервере и проекты должны выгружаться в рамках процессов CI/CD, но реальность такова, что на мелких сайтах работа ведётся с кодом напрямую. Потому добавляем нужных пользователей:

Явно включаем пользователя в группу, от имени которой работает web-сервер:

Включаем для пользователя web-разработчика возможность через SUDO работать в окружении привелегий и переменных «www-data»:

Таким образом, например, web-разработчику можно будет изменить параметры запуска задач по расписанию:

Файловая структура сайтов.

Обозначу сразу незаметную многим начинающим специалистам особенность: в Linux файлы и директории по умолчанию создаются с групповыми разрешениями доступа «только чтение» (общесистемная установка «umask 0022»). Отсюда истекает проблема, когда файл созданный web-сервером или PHP-интерпретатором оказывается недоступным для изменения web-разработчику этого сервера. По мере развития Linux это решалось разными способами, но на данный момент проще всего переопределить политику доступа применительно к структуре директорий с помощью надстройки над подсистемой регулирования доступа «POSIX ACL».

Предпишем устанавливать всем создаваемым впредь файлам (и директориям) разрешения полного доступа как для владельца, так и группы, при этом ограничиваем чтение и запись всем остальным:

Проверить установки можно следующим способом:

Исполняемое ядро CMS «Bitrix» может быть использовано для обслуживания нескольких сайтов. В простейшем случае программное ядро и директория загрузки объектов группы сайтов выносятся отдельно от таковых и подключаются через символические ссылки.

Разделяемый между сайтами «one.example.net» и «two.example.net» движок «Bitrix» (впоследствии к этим двум сайтам можно «прилеплять» дополнительные, по отработанной схеме):

Разделяемая между сайтами «one.example.net» и «two.example.net» директория для загрузок файлов:

Разделяемая между сайтами директория временных файлов:

И файловая структура поддержки сайтов:

Символическими ссылками подключаем директории разделяемых ресурсов внутрь сайтов:

Конечно же, закрываем доступ к данным сайтов всем посторонним:

Рассматривать здесь полную настройку PHP-интерпретатора не вижу смысла и обращу внимание лишь на особенности, необходимые для работы.

В настройках FPM-пула изменим ряд параметров для достижения лучшей производительности:

Возьмём за основу конфигурационный файл PHP-FPM (как наиболее активно используемый):

После того, как мы удостоверились, что перезапись конфигурационных файлов сервисам не повредит, делаем это:

Перезапускаем сервис или велим ему принять новую конфигурацию, по ситуации:

Удовлетворяем ресурсные аппетиты Bitrix-сайтов.

CMS «Bitrix» даже в представлениях его разработчиков настолько прожорлив и неоптимизирован, что для удовлетворения требованиям PCRE-функциональности теста «самопроверки» (site_checker.php) размер доступного PHP «стека» приходится увеличивать в десять тысяч (. ) раз.

Прежде всего узнаём текущее значение размера стека (в Байтах), хотя бы и для того, чтобы потом зафиксировать изменения:

В рамках классического «unix-way» задаём новые ограничения пользователю, от имени которого запускаются наши web-приложения:

Для приложений, запускаемых через игнорирующий системные лимиты «Systemd» придётся создавать индивидуальные конфигурации.

Уточняем наименование сервиса, в рамках которого запущен PHP-FPM:

Просматриваем параметры текущей конфигурации сервиса:

Теперь можно воспользоваться встроенной функциональностью «systemctl edit php7.0-fpm.service» для дополнения существующей конфигурации, но я предпочитаю вручную создать в соответствующем месте директорию для автоматически включаемых сервисом дополнительных файлов конфигурации с удобным мне именем файла:

Указываем «Systemd» перечитать и принять новый набор конфигураций, после чего перезапускаем сервис PHP-FPM:

Особо одарённые стремлением курочить системные настройки могут внести свои параметры лимитирования прямо в файлы конфигурации сервиса «/etc/init.d/php7.0-fpm» или «/lib/systemd/system/php7.0-fpm.service», но это «фу-фу»-путь.

Чтобы убедиться, что лимиты настроены верно и применяются к целевым приложениям, можно проверить параметры лимитов прямо из PHP-скрипта:

Оптимизация работы PHP с дисковой подсистемой.

Место сохранения сессий в PHP определяется параметров «session.save_path» и по умолчанию оно располагается в директории «/var/lib/php/sessions». Точнее всего это выявляется через вывод функции «php_info()». Мне представляется самым простым смонтировать поверх этой директории кусочек «tmpfs»:

Монтируем или перемонтируем (если вносились изменения в уже существующую конфигурацию) «tmpfs»-файловую систему:

Прежде всего, для включения поддержки Nginx протокола HTTPv2 генерируем DH-сертификат:

Для очень старых ОС и браузеров (Windows XP IE6, Java 6) придётся снизить размер DH до 1024:

Конечно же защищаем директорию SSL-сертификатов от посторонних:

Слегка корректируем глобальную конфигурацию web-сервиса:

# Явно запускаем Nginx в рамках привилегий пользователя «www-data» и такой же группы «www-data»
user www-data www-data;
.
worker_processes 24;
.
events <
worker_connections 1024;
.
>

http <
.
tcp_nodelay on;
tcp_nopush on;

# Запрещаем web-серверу сообщать о себе подробные данные
server_tokens off;

# Запрещаем просмотр содержимого директории, если не указан целевой файл
autoindex off;

# Отключаем проверку размера тела передаваемого PHP-FPM запроса
client_max_body_size 0;

Описываем конфигурацию типового web-сайта под управлением CMS «Bitrix»:

# Перехватываем все запросы по протоколу без шифрования и перенаправляем их на HTTPS
server <
listen 80 default_server;
server_name one.example.net www.one.example.net;
access_log off;
error_log off;
location / <
rewrite ^ https://one.example.net$request_uri permanent;
>
>

# Перехватываем запросы к имени нежелательного формата и перенаправляем к нужному
server <
listen 443 ssl http2;
server_name www.one.example.net;

access_log off;
error_log off;

ssl on;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.2048.pem;
ssl_certificate /etc/nginx/ssl/one.example.net.crt;
ssl_certificate_key /etc/nginx/ssl/one.example.net.key.decrypt;
ssl_session_cache shared:SSL:30m;
ssl_session_timeout 1h;
ssl_stapling on;
add_header Strict-Transport-Security max-age=15768000;

location / <
rewrite ^ https://one.example.net$request_uri permanent;
>
>

# Описывем рабочее окружение web-сайта как такового
server <
listen 443 ssl http2 default_server;
server_name one.example.net;

access_log /var/www/one.example.net/log/access.log;
error_log /var/www/one.example.net/error.log;

# SSL Configuration
ssl on;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
# Old backward compatibility (Windows XP IE6, Java 6)
ssl_ciphers HIGH:SEED:AES128-SHA:AES256-SHA:DES-CBC3-SHA:RC4-SHA:RC4-MD5:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.2048.pem;
ssl_certificate /etc/nginx/ssl/one.example.net.crt;
ssl_certificate_key /etc/nginx/ssl/one.example.net.key.decrypt;
# SSL Caching
ssl_session_cache shared:SSL:30m;
ssl_session_timeout 1h;
# SSL Verify Optional
ssl_stapling on;
# SSL Strict Optional
add_header Strict-Transport-Security max-age=15768000;

# Выключаем невостребованную обычно перекодировку контента
charset off;

# Явно указываем корень файловой структуры сайта, выше которой web-сервер не должен выходить
root /var/www/one.example.net/www;

# Задаём перечень файлов, которые web-сервер должен выдать в отсутствии явного указания со стороны клиента
index index.html index.htm index.php;

# Подставляем свою страницу обработки некоторых ошибок сервиса
error_page 500 502 503 504 /maintenance.html;
error_page 403 /403.html;

# Блокируем доступ к типовым «закрытым» ресурсам
location

* (/\.ht|/\.hg|/\.svn|/\.git|/\.enabled|/\.config) <
deny all;
log_not_found off;
access_log off;
>

# Блокируем доступ извне к внутренностям CMS «Bitrix»
location

* /(bitrix/modules|bitrix/managed_cache|bitrix/local_cache|bitrix/stack_cache|bitrix/backup|bitrix/tmp|upload/support/not_image|bitrix/php_interface|local/php_interface) <
deny all;
log_not_found off;
access_log off;
>

# Разрешаем доступ в административную панель Bitrix только избранным
location

# Разрешаем доступ только с определённого перечня IP-адресов
satisfy all;
allow 1.2.3.4/24;
deny all;

# Обрабатываем PHP-скрипты, доступные только после успешной аутентификации
location

# Включаем «HTTP Basic Authentication» для доступа к REST-API
location

# Обрабатываем PHP-скрипты, доступные только после успешной аутентификации
location

# Обработчик прямых обращений к PHP-скриптам
location

# Обработчик ошибок при доступе к ресурсам (таким образом в «Битрикс» реализована поддержка ЧПУ)
location @bitrix <

# Специфичная для Bitrix SEO-процедура подстановки к URL завершающего «/»
rewrite ^/(.+[^/])$ /$1/ permanent;

# Не реагируем на неинтересные события загрузок
location = /(404.html|favicon.ico|robots.txt|sitemap.xml) <
log_not_found off;
access_log off;
>

# Напрямую отдаём «статические» данные, предлагая браузеру сохранить их в своём «кеше», и не фиксируем в журнале эти события
location

Очевидно, что конфигурация Nginx для другого сайта будет отличатся лишь в части параметров включающих имя сайта «one.example.net», которое следует заменить на нужное.

Перед принятием в работу новой конфигурации обязательно просим Nginx проверить её синтаксическую корректность:

Старые клиентские системы и новые требования к SSL/TLS.

Наладка «HTTP Basic Authentication» посредством Nginx.

Если осуществляется полный переход с web-сервера «Apache» на «Nginx», то наверняка потребуется воспроизвести логику файлов «.htaccess», «.htpasswd» и «.htsecure» в части аутентификации пользователей при обращении к закрытым ресурсам.

Прежде всего ищем файлы точечной настройки и изучаем их функционал:

Особо важно не упустить блоков аутентификации средствами web-сервера при доступе к ресурсам, что-то вроде такого:

Подсистема «HTTP Basic Authentication» использует шифрование паролей на грани минимально допустимого с точки зрения устойчивости к взлому, но иногда приходится поддерживать совместимость со старыми протоколами, так что генерируем из желаемого пароля специфичного типа «хеш» (MD5-based password algorithm, Apache variant):

Полученный «хеш» подкладываем в файл с перечнем пользователей, доступ которым разрешается:

Рекомендую сразу запустить утилиту конфигурирования уровня безопасности СУБД:

Как и с PHP-интерпретатором «Битрикс» хочет от MySQL определённого. Предоставляем ему это:

.
[mysqld]
.
tmpdir = /var/lib/mysql/tmp
innodb_tmpdir = /var/lib/mysql/tmp

# Обязательно включаем приём подключений через файловый «сокет», существенно снижая операционные задержки
socket = /var/run/mysqld/mysqld.sock

# Разрешаем подключаться только с «localhost»
bind-address = 127.0.0.1

# Читаем документацию и подбираем подходящие параметры работы с доступной памятью
table_cache = 512
.
tmp_table_size = 512M
max_heap_table_size = 512M
.
query_cache_limit = 10M
query_cache_size = 256M
key_buffer_size = 512M //

20% RAM
.
innodb_buffer_pool_size = 1G //

60% RAM
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
.
innodb_read_io_threads = 16
innodb_write_io_threads = 16

# Явно указываем создавать для каждой таблицы отдельные файлы описаний (.frm) и данных (.ibd) на диске, а не сваливать всё в один (по умолчанию «ibdataX»)
innodb_file_per_table = 1
.

Параметры MySQL/MariaDB раскиданы по нескольким файлам в директории «/etc/mysql», так что есть смысл убедится, не переопределяются ли они где-то в «/etc/mysql/mariadb.conf.d/».

Для применения изменений перезапускаем СУБД или даём команду перечитать изменения, по необходимости:

Проконтролировать фактическое применение параметров можно через SQL-запросы:

Оптимизация работы MySQL с дисковой подсистемой.

Для СУБД MySQL, активно создающей и уничтожающей файлы для временных таблиц, выгодно вынести (параметром «tmpdir») эту работу в файловую систему, смонтированную в область памяти ОЗУ:

Добавляем в системный перечень монтируемых файловых систем нашу:

Монтируем или перемонтируем (если вносились изменения в уже существующую конфигурацию) нашу файловую систему:

Я бы выделил под эту файловую систему до 25% от объёма ОЗУ (она не заблокирует всё заявленное место, а будет выбирать блоки памяти по мере появления необходимости).

Разворачиваем БД для сайта.

Прежде всего потребуется создать «базу данных» и пользователя, от имени которого сайт будет обращаться к таковой:

Снимаем «дамп базы» MySQL исходного сервера (откуда осуществляется перенос сайта) и применяем его на новом сервере СУБД:

Для базы в целом (будет наследоваться после при создании новых таблиц):

Для таблицы (будет наследоваться при создании новых колонок):

Если таблица имеет внутри колонку в неверной кодировке, то можно это исправить за один проход, воздействуя на всю таблицу:

. или воздействовать точечно на нужную колонку таблицы:

CMS «Bitrix» весьма запутанная система, с массой подключаемых модулей, генерирующих большое количество блоков данных, используемых при генерации итоговых страниц из шаблонов. Вся эта неоптимальная деятельность сильно сказывается на отзывчивости сайта, терзая дисковую подсистему записью и считыванием информационного мусора, тормозя работу всех сервисов сервера в целом. Хорошо хоть часть этого промежуточного материала можно сохранять в кеширующем сервисе вроде «memcached» или «Redis»:

.
# Имя пользователя, для которого запускается сервис
-u www-data

# Количество одновременных подключений (по умолчанию 1024)
-c 1024

# Объем выделяемой памяти для кеша (по умолчанию 64MB)
-m 1024m

# Количество потоков Memcached (по умолчанию 4)
-t 8

# Выключаем прослушивание сетевого TCP-порта
#-l 127.0.0.01
#-p 11211

# Включаем работу через локальный файловый «сокет»
-s /tmp/memcached.sock
.

Настраиваем подсистему отправки почты.

Журнал регистрации событий утилита сама создавать не умеет, так что помогаем ей в этом:

Утилита «msmtp» способна полностью эмулировать классический «sendmail», так что для совместимости с уже настроенным по умолчанию программным обеспечением есть смысл сделать символическую ссылку, направляющую обращения в нужное место:

Для начала настроим один профиль, используемый по умолчанию:

# Set default values for all following accounts.
defaults
auth off
tls off
logfile /var/log/msmtp.log

# Default Account
account default
host mx.example.net
port 25
from www-data@one.example.net

Проверяем, работает ли это непосредственно из CLI сервера:

loaded system configuration file /etc/msmtprc
.
EHLO localhost
.
—> QUIT
Настройка подключения CMS «Bitrix» к БД.

$DBLogin = «user_one»;
$DBPassword = «user_password»;
$DBName = «one_example_net»;
$DBDebug = false;
$DBDebugToFile = false;
.

Кто заглядывал в PHP-код ядра «Битрикс», тот не удивится, зачем разработчики этой CMS требуют выключения режима строгого следования SQL-стандартам при формировании запросов к БД. В официальной инструкции предлагается сделать это глобально, для всей СУБД, но я предпочитаю всем остальным сайтам предоставить возможность работы в нормальных условиях, а «Битриксу» дать битриксово:

Замена пароля подключения к БД.

CMS «Bitrix» хочет, чтобы «всё было безопасно» и требует пароль подключения к СУБД состоящий из символов разного регистра и включающий в себя цифры со спецсимволами. Удовлетворяем его пожелания.

Генерируем кучу паролей и выбираем понравившийся:

Всё. Теперь в панели производительности Битрикс (http://site.com/bitrix/admin/perfmon_panel.php) должны увидеть подтверждение возможности использования этого типа кеша.

Особенность настройки FQDN.

CMS «Bitrix» активно использует для «самотестирования» обращения из своих скриптов к самим себе же, через обычные HTTP-запросы. Так вот, если в файле конфигурации локального «резольвинга» завязать доменные имена обслуживаемых сайтов на локальный IP (что часто случается на этапе первоначально наколенной разработки), то «самодиагностика» не состоится из-за сбоя авторизации при обращении к административной части сайта.

Адресация файловых систем.

Желательно удалить файлы, используемые лишь для инсталляции, а также случайно попавшие в дистрибутив:

Обновление «движка» CMS «Bitrix».

После запуска web-сайта на новой площадке возможно захочется протестировать, как скоро он сломается под возрастающей нагрузкой. Для этого можно воспользоваться утилиткой «Siege».

Вот так очень просто протестировать сервер в сценарии «250 пользователей 10 минут упорно ходят по сайту»:

[ уже посетило: 10385 / +5 ] [ интересно! / нет ]

bitrix php fpm config bitrix php fpm config bitrix php fpm config bitrix php fpm config bitrix php fpm config bitrix php fpm config

Поблагодарить автора bitrix php fpm config ( сделайте свой денежный вклад в хорошее настроение )

Источник

битрикс + nginx + php-fpm

мне увы пока так и не удалось полностью подружить эту связку.
столкнулся с проблемой заголовков(при ЧПУ), т.е. получаем либо на все 200 OK либо 404 Not Found bitrix php fpm config

если интересно могу выложить конфиги.

совместными усилиями, собрали рабочий конфиг, спасибо Сергею Ляпко

UPD 23.12.2015: Добавил новый конфиг.

Старый

Evgeniy Pedan, наверно nginx кеширует страницу phpinfo() когда через админку Битрикс смотришь
/bitrix/admin/phpinfo.php?test_var1=AAA&test_var2=BBB#authorize

вот я конфиг nginx поменял, кеш видно сбросился.

Все работает, спасибо большое! Такая экономия времени.

* \.(css|js|gif|png|jpg|jpeg|ico|ogg|ttf|woff|eot|otf)$ <
error_page 404 /404.html;
expires 30d;
>
вот этим:
location

* \.(css|js|gif|png|jpg|jpeg|ico|ogg|ttf|woff|eot|otf)\?4*$ <
error_page 404 /404.html;
expires 30d;
>

Куда не вставляю location /bitrix/admin < return 404; >не работает, открывается админка

* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ < access_log off; expires max; >#+ Close some uri for security location

Собственно рабочий конфиг (для оптимизации необходимо еще добавить другой 404 для статики ну и вообще посмотреть на дебаг на предмет лишних итераций)

Источник

битрикс + nginx + php-fpm

мне увы пока так и не удалось полностью подружить эту связку.
столкнулся с проблемой заголовков(при ЧПУ), т.е. получаем либо на все 200 OK либо 404 Not Found bitrix php fpm config

если интересно могу выложить конфиги.

совместными усилиями, собрали рабочий конфиг, спасибо Сергею Ляпко

UPD 23.12.2015: Добавил новый конфиг.

Старый

Evgeniy Pedan, наверно nginx кеширует страницу phpinfo() когда через админку Битрикс смотришь
/bitrix/admin/phpinfo.php?test_var1=AAA&test_var2=BBB#authorize

вот я конфиг nginx поменял, кеш видно сбросился.

Все работает, спасибо большое! Такая экономия времени.

* \.(css|js|gif|png|jpg|jpeg|ico|ogg|ttf|woff|eot|otf)$ <
error_page 404 /404.html;
expires 30d;
>
вот этим:
location

* \.(css|js|gif|png|jpg|jpeg|ico|ogg|ttf|woff|eot|otf)\?8*$ <
error_page 404 /404.html;
expires 30d;
>

Куда не вставляю location /bitrix/admin < return 404; >не работает, открывается админка

* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ < access_log off; expires max; >#+ Close some uri for security location

Собственно рабочий конфиг (для оптимизации необходимо еще добавить другой 404 для статики ну и вообще посмотреть на дебаг на предмет лишних итераций)

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *