У меня есть Apache 2.4 с PHP 5.5 без использования php_mod, но с PHP-FPM и mod_proxy_fcgi, поэтому я добавил следующее в vhost:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1
Это работало хорошо, но когда у меня возникли проблемы с таймаутами, я добавил следующий код, чтобы исправить эту проблему в файле vhost:
<Proxy fcgi://127.0.0.1:7000>
ProxySet timeout=3600
</Proxy>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1
Однако я хотел бы добавить этот тайм-аут только в панель администрирования веб-сайта, которая находится по адресу www.site.com/admin/xxx. Я попытался добавить тег местоположения, как показано ниже, но это не сработало (Apache не работает при перезапуске).
<LocationMatch ^/admin/.*\.php(/.*)?$>
<Proxy fcgi://127.0.0.1:7000>
ProxySet timeout=3600
</Proxy>
</LocationMatch >
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1
Прежде всего, это возможно? Тогда какой будет правильный синтаксис?
Большое спасибо за ваше время
Хотя это позволит любому сценарию ниже администратора запускаться с заданными настройками, за стеной администратора (и я предполагаю, что вход в систему) это не должно быть проблемой.
<Proxy "fcgi://127.0.0.1:7000/home/var/www/site/admin/*">
ProxySet timeout=3600
</Proxy>
ProxySet
внутри директивы Proxy может использоваться без определения URL / балансировки / работника. Но ты должен все еще сможете использовать ProxySet в директиве Location.
<LocationMatch ^/admin/.*\.php(/.*)?$>
ProxySet "fcgi://127.0.0.1:7000" timeout=3600
</LocationMatch>
Если при запуске все еще происходит сбой apache, проверьте журналы apache или запустите strace -Ff apachectl start
чтобы найти проблему, это может быть просто ошибка в этой версии apache.
Тем не менее, я сильно подозреваю, что ваше регулярное выражение LocationMatch ^/admin/.*\.php(/.*)?$
быть причиной отказа апача.
Других решений пока нет …