Попытка настроить Apache 2.4 с прокси-сервером PHP-FPM, прослушивая сокет unix.Следующая базовая конфигурация работает правильно:
<VirtualHost *:80>
DocumentRoot "/srv/httpd/htdocs"
ServerName example.tld
ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/"
</VirtualHost>
Теперь я бы хотел изменить ProxyPassMatch для особого случая.Когда URI после домена начинается с test
, вставьте /special/
в путь к целевому пути:
<VirtualHost *:80>
# -- snip --
ProxyPassMatch "^/test/(.*\.php(/.*)?)$" "unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/test/special/$1"
</VirtualHost>
Однако произойдет сбой со следующей ошибкой отладки:
[Mon Nov 26 21:38:31.484668 2018] [proxy:error] [pid 14779:tid
140031510611712] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:8000 (*) failed
[Mon Nov 26 21:38:31.484707 2018] [proxy_fcgi:error] [pid 14779:tid
140031510611712] [client ::1:55464] AH01079: failed to make connection to backend: 127.0.0.1
Нигде нетлюбой из файлов конфигурации Apache, например, указанный как порт 8000.
Он ведет себя таким образом, только если целевой URL является сокетом домена unix и путь к сценарию содержит ссылку на захват regexp $N
.
unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/test/special/$1
Если опустить перехват регулярных выражений или использовать TCP URI вместо сокета, попытка подключения к 127.0.0.1:8000 не производится.
Официальная документация мне неясно, в каком формате fcgi в этом случае.Возможная ошибка в реализации?
Как правильно отобразить URL запроса в сокет unix при использовании захваченной ссылки из шаблона RE?