Я пытаюсь понять, как перейти с Apache на nginx, сохранив гибкость правил перезаписи для разработчиков. Это наша текущая установка:
Насколько я уже знал, в nginx не существует эквивалента .htaccess для каждого каталога. Итак, как мы можем решить эту проблему? Должны ли мы использовать «глобальный» файл index.php для устранения перезаписи? Это, вероятно, значительно снизит общую производительность.
P.S. Как вы могли заметить, я никогда раньше не использовал nginx.
Хорошо, поэтому, во-первых, я думаю, вам следует тщательно подумать, действительно ли nginx поможет вам с вашей проблемой производительности (согласно вашему комментарию), и протестировать это в среде разработки, прежде чем беспокоиться о том, как ваше развертывание будет работать.
Это правда, что nginx быстрее, и что его многопоточная архитектура помогает справляться с высокими нагрузками, но ваш сайт на PHP будет чрезвычайно необычным, если часть вашей операции, которую вы хотите ускорить, составляет более одного или двух процентов. от общих задержек. Вашим узким местом почти наверняка будет ваша база данных и выполнение PHP.
Вероятно, вам следует сначала взглянуть на кеширование компиляции PHP (например, APC), внешний прокси (например, varnish или squid), внутреннее кеширование в вашем приложении (это wordpress? Там есть несколько хороших модулей кеширования). Передача статических файлов только nginx может быть хорошей идеей, но, вероятно, лучше рассмотреть возможность использования либо ваших собственных прокси, либо сети распространения контента для этого контента.
Если вы все же решите продолжить, вам на ум приходят некоторые инструменты, хотя они довольно тяжелые. Вы можете использовать инструменты непрерывной интеграции и управления конфигурацией (например, Jenkins и Puppet или их эквиваленты) для развертывания вашей конфигурации из репозитория управления версиями на вашем сервере всякий раз, когда она регистрируется в соответствующей ветке. Это сложная инфраструктура, которую нужно изучить и построить, и без хороших знаний, навыков и заботы вы все равно можете просто предоставить своим разработчикам root-доступ. Система делегирования Apache через .htaccess разрабатывалась на протяжении многих лет, и вы не собираетесь копировать ее безопасность в спешке.
Вернитесь и проверьте свои предположения с помощью инструмента профилирования о том, насколько проблема производительности ваша обработка регулярных выражений. Я использовал в основном Xdebug, но есть и другие хорошие альтернативы.