nginx и PHP-FPM в 1С-Битрикс - связка, редиректы, статика
Веб-сервер - вторая по объёму подтема инфраструктуры: 244 вопроса из собранных. Здесь собраны решения по nginx и связке с обработчиком PHP.
Что общего у этих задач
В окружении работают два веб-сервера сразу. nginx стоит спереди и отдаёт
статику, Apache позади обрабатывает PHP через .htaccess. Связка удобна тем, что
переносит проекты без переписывания правил, но означает: часть правил живёт в
одном сервере, часть в другом, и искать поломку надо в обоих.
Статику nginx отдаёт мимо PHP и мимо .htaccess. Существующий файл он
возвращает сам, не спрашивая Apache. Поэтому заголовки кеширования, ограничения
доступа и редиректы, прописанные в .htaccess, на статику не действуют - их
задают в конфиге nginx.
Редиректы бывают на трёх уровнях: nginx, .htaccess и код платформы. Они
выполняются в этом порядке, и правило верхнего уровня отменяет всё нижнее. Отсюда
типовая картина, когда правило в админке не работает: его перехватил nginx.
Ошибки веб-сервера видны только в его журналах. Страница показывает общий код ответа, а причина лежит в журнале nginx или обработчика PHP, и разбор всегда начинается там.
С чего начать
Начинают с журналов: что записал nginx и что записал обработчик PHP в момент проблемы. Эти два файла отвечают на большинство вопросов о кодах ответа.
Дальше проверяют, на каком уровне живёт нужное правило. Редирект, заголовки кэширования и ограничение доступа задают в конфиге веб-сервера, а не в коде сайта.
Последним смотрят на пределы: число процессов обработчика, время ожидания ответа и размер принимаемого запроса. Под нагрузкой именно они превращаются в коды ошибок на витрине.
Решения подтемы
- Редирект на другой домен - где ставить правило, почему оно не срабатывает, что ломает композит.
- nginx и PHP-FPM: статика, пулы, медленные ответы - разделение статики и динамики, пулы, разбор времени ответа.
- Редиректы внутри сайта: 301 на раздел, https и старые адреса - три уровня правил, таблица соответствий, цепочки переходов.
- ERR_TOO_MANY_REDIRECTS: слишком много перенаправлений - цикл переходов: спор правил, прокси, свой код, кэш браузера.
- Переезд на HTTPS: контент, база, интеграции - правило перехода с исключениями, смешанный контент, адреса в базе.
- Файл .htaccess на платформе: что работает, что ломает - когда файл читается, правила адресов, директивы PHP, перенос.
- Кэш браузера и сжатие статики: заголовки, gzip, обновление - срок хранения у браузера, сжатие ответов, обновление файлов после выкладки.
- Веб-сервер вручную: фронтенд, бэкенд, конфигурация - два уровня веб-сервера, состав конфигурации, частичная сборка.
Частые вопросы
Зачем нужен Apache, если есть nginx?
Ради .htaccess: правила из него читает Apache, и платформа рассчитывает на это. Связка позволяет переносить проекты между хостингами без переписывания конфигов веб-сервера.
Можно ли работать только на nginx с PHP-FPM?
Да, и это быстрее, но правила из .htaccess придётся перенести в конфиг nginx руками. Модули и решения, которые кладут свои правила в .htaccess, после такого перехода перестают работать молча.
Почему редирект из админки не срабатывает?
Скорее всего его перехватывает nginx или .htaccess: они отрабатывают раньше кода платформы. Проверяют по порядку сверху вниз, начиная с конфига nginx.
Почему после смены домена часть страниц уходит на старый адрес?
Старый домен остался в настройках сайта, в правилах nginx или в закешированных страницах композита. Каждое из трёх мест правится отдельно.
Связанные темы
- Сервер и поиск - устройство сервера целиком
- BitrixVM и веб-окружение - кто генерирует конфиги
- Композит: эксплуатация - кеш страниц перед PHP
- Раздел Инфраструктура