Я хочу использовать PHP 7 с новыми приложениями и PHP 5.6 с приложениями, которые не работают с PHP 7. Поэтому я пытаюсь настроить Nginx для включения разных версий PHP для разных путей. Но не работает:
# should enable PHP5 for all PHP-scripts under /vexim/ path
location ^~ /vexim/.*\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
И по умолчанию для всего остального должен быть PHP 7:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
При такой конфигурации скрипты PHP в / vexim / вообще не анализируются. Как заставить это работать с разными путями и версиями PHP?
(Используется Debian 8.3 Jessie, Nginx 1.8.1 (dotdeb), PHP 5.6, PHP 7 (dotdeb))
location ^~
не является расположением регулярного выражения, это расположение префикса, которое имеет приоритет над всеми расположениями регулярного выражения.
Видеть этот документ для подробностей.
Вероятно, вы хотите:
location ~ ^/vexim/.*\.php$ { ... }
location ~ \.php$ { ... }
Убедитесь, что /vexim
location появляется на первом месте по мере упорядочения местоположений регулярных выражений.